python列表内int元素排序

列表从小到大排序

#列表从小到大排序,不支持列表内有相同的元素


li=[1,3,6,5,4,9,8,20,10] #未排序
cs=[]

for i in range(0,len(li)):
    if i == 0:
        if li[0] < li[1]:
            cs.append(li[0])
            cs.append(li[1])
        else:
            cs.append(li[1])
            cs.append(li[0])
            
    if i>=2:
        for j in range(0,i):

            if li[i]<cs[0]: #如果是当前cs内最小的
                cs.append(li[i])
                for m in range(1,len(cs)):
                    cs[-m],cs[-m-1]=cs[-m-1],cs[-m]
                break
                
            if li[i]>cs[i-1]: #如果是当前cs内最大的
                cs.append(li[i])
                break
            
            if cs[j] < li[i] <cs[j+1] : 
                cs.append(li[i])
                for k in range(1,len(cs)-j-1):
                    cs[-k],cs[-k-1]=cs[-k-1],cs[-k]
                break

li[0:]=cs[0:] #排序后
print(li)

列表从大到小排序

​
#列表从大到小排序,不支持列表内有相同的元素


li=[1,3,6,5,4,9,8,20,10] #未排序
cs=[]

#先从小到大排序
for i in range(0,len(li)):
    if i == 0:
        if li[0] < li[1]:
            cs.append(li[0])
            cs.append(li[1])
        else:
            cs.append(li[1])
            cs.append(li[0])
            
    if i>=2:
        for j in range(0,i):

            if li[i]<cs[0]: #如果是当前cs内最小的
                cs.append(li[i])
                for m in range(1,len(cs)):
                    cs[-m],cs[-m-1]=cs[-m-1],cs[-m]
                break
                
            if li[i]>cs[i-1]: #如果是当前cs内最大的
                cs.append(li[i])
                break
            
            if cs[j] < li[i] <cs[j+1] : 
                cs.append(li[i])
                for k in range(1,len(cs)-j-1):
                    cs[-k],cs[-k-1]=cs[-k-1],cs[-k]
                break

#反转,从大到小排序
n=0
for y in range(1,len(cs)):
    for x in range(1,len(cs)-n):
        cs[-x],cs[-x-1]=cs[-x-1],cs[-x]
    print(cs)
    n += 1
        
    
li[0:]=cs[0:] #排序后

print(li)

​

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值