python列表排序

1.使用list内建函数sort排序

list.sort(key=None,reverse=False)

l = [2,4,4,1,7,2,5,0]

print(l.sort())
结果:[0, 1, 2, 2, 4, 4, 5, 7]

l.sort(reverse=True)
print(l)
结果:[7, 5, 4, 4, 2, 2, 1, 0]

2.用序列类型函数sorted(list)进行排序

l = [2,4,4,1,7,2,5,0]
print(sorted(l))
结果:[0, 1, 2, 2, 4, 4, 5, 7]

注意:sorted和sort区别

sorted(list)返回一个对象,可以用作表达式,原生的list顺序不变,生成一个新的排好序的list对象,sorted可以对可迭代对象进行排序

list.sort()不会返回对象,改变原有的list顺序。只能用于列表排序

3.选择排序法

从第一个位置开始比较,找出最小的,和第一个位置互换,开始下一轮。

步骤:

  1. 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  3. 以此类推,直到所有元素均排序完毕。
#选择排序
s = [2,4,1,8,33,3,9,22]
n = len(s)
for i in range(n):
    min = i #最小值索引
    for j in range(i+1,n):
        if s[min] > s[j]:
            min = j 
    s[min],s[i] = s[i],s[min] #找出最小值与当前值交互
print(s)

4.冒泡排序法

从左到右,数组中相邻的两个元素进行比较,将较大的放到后面。

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对第0个到第n-1个数据做同样的工作。这时,最大的数就“浮”到了数组最后的位置上。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
lt = [3, 5, 2, 1, 8, 4]
n= len(lt)
for x in range(n-1):
   for y in range(n-1-x):
      if lt[y]>lt[y+1]:
         lt[y],lt[y+1]=lt[y+1],lt[y]
print(lt)
原文地址:https://www.cnblogs.com/qqxin/p/11523582.html