python 排序

最近连冒泡都忘记咋写了,真是想找个缝了钻进去,又熟悉了一遍,做个笔记

 1 '''
 2 冒泡排序
 3 相邻的二个元素比较,大的放在后面
 4 时间复杂度 O(n^2)
 5 空间复杂度 O(1)
 6 '''
 7 def bubble_sort(array)->list:
 8     for i in range(len(array)):
 9         for j in range(len(array)-1):
10             if array[j] > array[j+1]:
11                 array[j],array[j+1] = array[j+1],array[j]
12     return array
13 
14 '''
15 快速排序 
16 选择一个基准值,将所有比他大的放在另一边,然后迭代,最后剩下长度1会结束循环
17 时间复杂度 O(nlog2n)
18 空间复杂度 O(log2n)
19 '''
20 def quick_sort(array)->list:
21     if len(array) <=1:return array
22     else:
23         mid = array[0]
24         litt = [x for x in array[1:] if x < mid]
25         big = [x for x in array[1:] if x >= mid]
26         return quick_sort(litt) + [mid] +quick_sort(big)
27 
28 '''
29 选择排序
30 将前面的数与后面的数依次对比,然后大小互换
31 时间复杂度 O(n^2)
32 空间复杂度 O(1)
33 '''
34 def select_sort(array):
35     for i in range(len(array)-1):
36         for j in range(i+1,len(array)):
37             if array[i] > array[j]:array[i],array[j]=array[j],array[i]
38     return array
39 
40 
41 
42 '''
43 插入排序
44 每次取一个值,与左边对比,小的放在左边
45 时间复杂度 O(n^2)
46 空间复杂度 O(1)
47 '''
48 def insert_sort(array):
49     for i in range(1,len(array)):
50         temp = array[i]
51         j = i-1
52         while(j>=0 and array[j]>temp):
53             array[j+1] = array[j]
54             array[j] = temp
55             j -= 1
56     return array
57 
58 l = [3,4,2,1]
59 print(insert_sort(l))

参考博客:

https://www.cnblogs.com/ladder/p/10685051.html
https://blog.csdn.net/ITmincherry/article/details/100124008
https://zhuanlan.zhihu.com/p/83148834
原文地址:https://www.cnblogs.com/whycai/p/14870268.html