鱼C论坛

 找回密码
 立即注册
查看: 3493|回复: 11

实现从大到小排序

[复制链接]
发表于 2016-12-12 10:54:23 | 显示全部楼层 |阅读模式
3鱼币
本帖最后由 Hoo_gang 于 2016-12-12 11:35 编辑

编个了个程序:

array=[3,5,7,9,2,4,1,8]
for i in range(len(array)-1,0,-1):
        for j in range(i,0,-1):
                if array[j]>array[j-1]:
                        array[j],array[j-1]=array[j-1],array[j]
print(list(array))

打印结果:
[9, 8, 7, 5, 3, 4, 2, 1]
不对呢


以实现
array.sort(reverse=True)功能

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-12 11:52:24 | 显示全部楼层
这个程序问题还很多,首先for i in range(len(array)-1,0,-1):这个语句range函数是不取左后的一个值得,所哟直接写range(len(array))就可以了,不用写那么麻烦,二哥根本不需要写什么二次循环吧,现在i就只是一个真实的数了没有必要写 for j in range(i,0,-1):了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-12 13:28:27 | 显示全部楼层
array=[3,5,7,9,2,4,1,8]
for i in range(-len(array),-1,1):
        for j in range(-1,i,-1):
                if array[j]>array[j-1]:
                        array[j],array[j-1]=array[j-1],array[j]
print(list(array))

自己搞定了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-12 13:29:28 | 显示全部楼层
小茗同学 发表于 2016-12-12 11:52
这个程序问题还很多,首先for i in range(len(array)-1,0,-1):这个语句range函数是不取左后的一个值得,所 ...

你这不对啊 ,这是冒泡排序算法,每次把大的数放到第一个,依次进行
参见 http://www.cnblogs.com/buro79xxd/archive/2011/05/23/2054493.html
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-12 15:04:50 | 显示全部楼层
采用正序编号:
array=[3,5,7,9,2,4,1,8]
for i in range(0,len(array)-1,1):
        for j in range(len(array)-1,i,-1):
                if array[j]>array[j-1]:
                        array[j],array[j-1]=array[j-1],array[j]
print(list(array))

采用逆序编号:
array=[3,5,7,9,2,4,1,8]
for i in range(-len(array),-1,1):
        for j in range(-1,i,-1):
                if array[j]>array[j-1]:
                        array[j],array[j-1]=array[j-1],array[j]
print(list(array))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-12 15:16:26 | 显示全部楼层
或者 把最小的一个数每次放到最后
array = [123,43,55,2,34,12,1]
for i in range(len(array)-1, 0, -1):
    for j in range(0, i):
        if array[j] < array[j + 1]:
            array[j], array[j + 1] = array[j + 1], array[j]
print(list(array))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-12 23:09:56 From FishC Mobile | 显示全部楼层
为啥不直接用sort() 还要自己造轮子呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-13 16:04:54 | 显示全部楼层
jerryxjr1220 发表于 2016-12-12 23:09
为啥不直接用sort() 还要自己造轮子呢?

初学者,练练手
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-14 08:37:27 | 显示全部楼层
  1. a = [123,43,55,2,34,12,1]

  2. b = a[:2] if a[0]<=a[1] else a[:2][::-1]

  3. for i in range(2,len(a)):
  4.     if a[i]<b[0]:
  5.         b.insert(0,a[i])
  6.     elif a[i]>b[-1]:
  7.         b.append(a[i])
  8.     else:
  9.         for j in range(len(b)-1):
  10.             if b[j] <a[i]<b[j+1]:
  11.                 b.insert(j+1,a[i])
  12.                 break
  13. print b
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-25 11:27:41 | 显示全部楼层
array=[3,5,7,9,2,4,1,8]
for i in range(-len(array),-1,1):
        for j in range(-1,i,-1):
                if array[j]>array[j-1]:
                        array[j],array[j-1]=array[j-1],array[j]
print(list(array))
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2016-12-25 13:40:39 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-12-29 18:57:45 | 显示全部楼层
用sort啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-24 11:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表