![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程练习8
陈小q
这个作者很懒,什么都没留下…
展开
-
Python:冒泡排序
冒泡排序是一种稳定的排序方法,最好O(n),最坏、平均O(n2),空间复杂度O(1)def bubble_sort(lists): lens = len(lists) for i in range(lens-1): for j in range(lens-1-i): if lists[j]>lists[j+1]: lists[j], lists[j+1] = list...原创 2019-08-13 15:50:12 · 186 阅读 · 0 评论 -
Python:归并排序
归并排序是稳定的,时间复杂度为O(nlogn),空间复杂度O(1)def merge(left, right): i, j = 0, 0 result = [] while i<len(left) and j<len(right): if left[i] < right[j]: result.append(left...原创 2019-08-13 16:19:55 · 148 阅读 · 0 评论 -
Python:快速排序
快速排序是一种不稳定的排序方式,最坏O(n2),最好、平均O(nlogn),空间复杂度O(logn)def quick_sort(lists, left, right): if left >= right: return lists key = lists[left] low = left high = right while left < right : whil...原创 2019-08-13 17:07:25 · 85 阅读 · 0 评论 -
Python:希尔排序
希尔排序不稳定,平均O(nlogn),最差O(ns)(1<s<2),空间O(1)def shell_sort(lists): lens = len(lists) group = 2 step = lens // group while step > 0: for i in range(step): j = ...原创 2019-08-13 18:09:17 · 120 阅读 · 0 评论 -
Python:堆排序
不稳定,适用于记录较多的文件,时间复杂度O(nlogn)def adjust_heap(lists,i,lens): lchild = 2*i + 1 rchild = 2*i + 2 maxs = i if i < lens//2: if lchild < lens and lists[lchild] > lists[maxs]...原创 2019-08-13 19:02:20 · 58 阅读 · 0 评论 -
Python:基数排序
稳定import mathdef radix_sort(lists,radix=10): k = int(math.ceil(math.log(max(lists),radix))) bucket = [[] for i in range(radix)] for i in range(1, k+1): for j in lists: ...原创 2019-08-13 22:14:17 · 117 阅读 · 0 评论 -
Python:选择排序
def select_sort(lists): lens = len(lists) for i in range(lens): mi = i for j in range(i+1, lens): if lists[mi] > lists[j]: mi = j lists[mi], lists[i] = lists[i], lists[mi] return li...原创 2019-08-13 11:07:20 · 92 阅读 · 0 评论 -
Python:插入排序
插入排序是一种稳定的排序方式,最好O(n),最坏、平均O(n2),空间复杂度O(1)def insert_sort(lists): lens = len(lists) for i in range(1,lens): key = lists[i] j = i-1 while j>=0: if lists[j]>key: lists[j+1] = lists...原创 2019-08-13 11:37:28 · 115 阅读 · 0 评论