在算法中,无外乎最重要的就是排序算法,尤其是在面试中经常会被问到什么冒泡排序,选择排序,插入排序等等,那么在这次文章中介绍以python为例的排序算法。
1、冒泡排序:就是重复遍历要排序序列,然后依次按照索引去比较两个元素大小,最后将最大或者最小值浮到序列末端
def bubble_sort(alist):
方案一:
n = len(alist)
# 找到列表冒泡最大值需要的次数
for j in range(0,n-1):
# 每一次找到最大值需要的比较次数
for i in range(0,n-1-j):
if alist[i] > alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
方案二:
for j in range(len(alist)-1,0,-1):
for i in range(j):
if alist[i] > alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
if __name__ == '__main__':
li=[12,8,39,9,4,73,82,23,21]
bubble_sort(li)
print(li)
2、选择排序:将未排序的序列选择最大或最小值,然后放在已经排序好的末端组成一个新的序列
def selecet_sort(alist):
n = len(alist)
# 需要进行多少次选择操作
for i in range(n-1):
min_index = i
# 从i+1位置到末尾选择出最小数据
for j in range(i+1,n):
if alist[min_index] > alist[j]:
min_index = j
alist[min_index],alist[i] = alist[i],alist[min_index]
if __name__ == '__main__':
li=[333,32,433,13,9,44,12,53]
selecet_sort(li)
print('排序后: ',li)
3、插入排序:将未排序的序列依次取出来然后放在已经排序序列中的正确位置上而组成新的序列
def insert_sort(alist):
n = len(alist)
for i in range(1,n):
for j in range(i,0,-1):
if alist[j] < alist[j-1]:
alist[j],alist[j-1] = alist[j-1],alist[j]
# i = j
# while i>0:
# if alist[i]