def mao(item): # 冒泡排序
for i in range(len(item)-1, 0, -1):
count = 0
for j in range(i):
if item[j] > item[j + 1]:
item[j], item[j + 1] = item[j + 1], item[j]
count += 1
if count == 0:
break
if __name__ == '__main__':
li = [6, 5, 4, 3, 2, 1]
mao(li)
print(li)
冒泡排序原理
重复遍历排序的序列,每次取两个元素进行比较,如果顺序错误就将其进行调换,重复进行,知道没有需要交换就结束遍历
名字来源:越小的元素经过交换会慢慢浮到元素的最顶端
最坏时间复杂度:O(n2)
最好时间复杂度:O(n)
稳定型
def xua(item): # 选择排序
n = len(item)
for j in range(n - 1):
mix = j
for i in range(j + 1, n):
if item[i] < item[mix]:
mix = i
item[j], item[mix] = item[mix], item[j]
if __name__ == '__main__':
item = [6, 5, 4, 3, 2, 1]
xua(item)
print(item)
选择排序原理
遍历没有排序的序列,取到最小的,放到序列起始端,然后再次遍历没有排序的序列,再次找到最小的放到已排序序列后面,依次循环完成排序操作
最坏时间复杂度O(n2)
最优时间复杂度O(n2)
稳定性:稳定
def cha(item): # 插入排序
n = len(item)
for j in range(1, n):
for i in range(j, 0, -1):
if item[i] < item[i - 1]:
item[i], item[i - 1] = item[i - 1], item[i]
else:
break
if __name__ == '__main__':
item = [6, 5, 4, 3, 2, 1]
cha(item)
print(item)
插入排序原理
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入
最坏时间复杂度O(N2)
最好时间复杂度O(N)
稳定型
排序原理
猜你喜欢
转载自blog.csdn.net/xiao_xia_ming/article/details/82050466
今日推荐
周排行