Python编程: 排序

  • 永久排序: sort() 这个方法没有返回值
 list1=[96,28,-1,36,22,75,9,18]
 list1.sort()
  • sort()倒序排序,设置reverse=True
list1=[96,28,-1,36,22,75,9,18]
 list1.sort(reverse=True)
  • 临时排序 sorted() ,返回值为排序后的列表,是一个新的对象
 list1_new=sorted(list1)
 print(list1_new)
  • sorted()倒序排序,设置reverse=True
 list1_new=sorted(list1,reverse=True)
  • 翻转列表,不排序
 print(list1[::-1])

冒泡算法

5,4,3,2,1 原始数据 n个数, 第一轮比较n-1次

第一次比较
4,5,3,2,1 第一次比较,将5和4的位置互换
4,3,5,2,1 第二次比较,将5和3的位置互换
4,3,2,5,1 第三次比较,将5和2的位置互换
4,3,2,1,5 第四次比较,将5和1的位置互换,第一论比较结束,最大的数沉底

第二轮比较
4,3,2,1,5 第二轮比较n-2次
3,4,2,1,5 第一次比较,将4和3的位置互换
3,2,4,1,5 第二次比较,将4和2的位置互换
3,2,1,4,5 第三笔比较,将4和1的位置互换

第三轮比较
3,2,1,4,5 第三轮比较n-3次
2,3,1,4,5 第一次比较,将3和2的位置互换
2,1,3,4,5 第二次比较,将3和1的位置互换

第四轮比较
2,1,3,4,5 第四轮比较n-4次
1,2,3,4,5 第一次比较,将2和1的位置互换 n个数一共比较了n-1轮

 list1=[96,28,-1,36,22,75,9,18]
 for i in range(len(list1)-1):  # 控制比较多少轮
     for j in range(len(list1)-1-i):  # 控制每轮比较多少次
         if list1[j]>list1[j+1]:  # 如果前面的数比后面的数大,则两数互换
             print(f'第{j}位和第{j+1}位的顺序不对')
             print(f'变化之前-------------------------->{list1}')
             list1[j],list1[j+1]=list1[j+1],list1[j]
             print(f'变化之后-------------------------->{list1}')
     print(f'第{i+1}轮循环结束')
 print(list1)

图解
1626333693864081749.gif
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容