python实现排序
# # # 1.冒泡排序
# # # 将相邻的两个数两两比较,每次外循环都将最大的数移到最后,
# # # 每次内循环比较两个数,如果后一个数小于前一个数,两个数交换。
#
# # # 冒泡排序是最慢的排序算法,实际运用中效率最低,
# # # 当数列为由小到大的有序数列时为最好情况,当由大到小时为为最坏情况。
#
def Bubble_sort(alist):
count = 0
# 遍历每一趟比较的次数,每走一趟能得出右边的一个最大值,比较的次数就递减
for j in range(len(alist)-1,0,-1):
flag = False #flag运用于冒泡出现最优情况的时候,如果第一趟没有交换任何数,那么就不需要后面的趟数
# 遍历当前趟从索引0开始比较完当前次数
for i in range(j):
if alist[i] > alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
flag = True
count+=1
if flag == False:
break
print(alist,count)
list = [54,26,93,17,77,31,44,55,20] #打乱 时间复杂度:O(n^2)
# list = [99,88,77,66,55,44,33,22,11] #最坏的情况 时间复杂度:O(n^2)
list = [11,22,33,44,55,66,77,88,99] #最优情况 时间复杂度:O(n)
Bubble_sort(list)
2.选择排序
def select_sort(alist):
#以游标初始处开始向后遍历,结束一次遍历为一趟,要走len(alist)-1趟
for j in range(len(alist)-1):
min_index = j #给一个最小游标,放在未排序的第一个元素上
#以初始游标值为标准,把游标初始值和其后面的值依次比较,
# 碰到更小的数将游标放入该值索引处,
# 全比较完后将最终游标指向的值和初始游标值位置调换
for i in range(j+1,len(alist)):
if alist[min_index] > alist[i]:
min_index = i
# 假如当前游标位置与初始游标位置不一样,说明发生了变化
# 将初始游标值与当前游标值调换
if min_index != j:
alist[j],alist[min_index] = alist[min_index],alist[j]
print(alist)
list = [54,226,93,17,77,31,44.55,20]
select_sort(list)
3.插入排序
def insert_sort(alist):
# 从第二个开始,和前面所有元素比,比到第0个元素算一趟
for j in range(1,len(alist)):
flag = True
# 将当前元素和前面每一个元素进行比较,比上一个元素小,两个就调换位置
for i in range(j,0,-1):
if alist[i] < alist[i-1]:
alist[i],alist[i-1] = alist[i-1],alist[i]
flag = False
if flag == True:
break
print(alist)
list = [54,26,93,17,77,31,44,55,20]
insert_sort(list)
继续阅读与本文标签相同的文章
下一篇 :
ISE14.7在Win10系统下的兼容问题
-
开发者必读 · 周报 | 002期
2026-05-19栏目: 教程
-
斩获2019中国金融科技创新大赛金奖,蚂蚁金服mPaaS助力打造超级App生态
2026-05-19栏目: 教程
-
有呀!互联网icp许可证除申请以外有转让的吗?飞起
2026-05-19栏目: 教程
-
Apache Zepplin使用Hive Interpreter查询
2026-05-19栏目: 教程
-
大宗货运如何实现“重去重回”?
2026-05-19栏目: 教程
