您的位置:首页 > 编程语言 > Python开发

八大排序算法的python 实现(插入排序、选择排序)

2019-03-18 16:42 405 查看

1 插入排序

  算法适用于少量数据的排序,是稳定的排序方法。

  

[code]def insert_sort(lists):
#插入排序
n = len(lists)
for i in range (1,n):
for j in range(i,0,-1):
if lists[j]<lists[j - 1]:
lists[j],lists[j - 1] = lists[j - 1] ,lists [j]
else:
break

if __name__ =="__main__":
lists = [54, 26, 93, 17, 77, 31, 44, 55, 20]
insert_sort(lists)
print(lists)

2 选择排序:最优时间复杂度:O(n^2) 
最坏时间复杂度:O(n^2) 
稳定性:不稳定(考虑升序每次选择最大的情况)

[code]def selectionsort(lists):
n = len(lists)
for i in range (0,n-1):
min_index = i
for j in range(i+1,n):
if lists[j]<lists[min_index]:
min_index = j
if i !=min_index:
lists[i],lists[min_index]= lists[min_index],lists[i]

if __name__ == '__main__':
lists = [54, 26, 93, 17, 77, 31, 38, 55, 20]
print("原列表为:%s" % lists)
selectionsort(lists)
print("新列表为:%s" % lists)

3.冒泡排序

最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)

最坏时间复杂度:O(n^2)

稳定性:稳定

   

[code]def bubblesort(lists):
n = len(lists)
for i in range(0,n-1):
count = 0
for j in range(0,n-i-1):
if lists[j] >lists[j + 1]:
lists[j], lists[j+1] = lists[j+1],lists[j]
count +=1
if 0 ==count:
break

if __name__ == '__main__':
lists = [54, 26, 93, 77, 44, 31, 44, 55, 20]
print("原列表为:%s" % lists)
bubblesort(lists)
print("新列表为:%s" % lists)

  4归并排序

       

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐