python
liuyq78
技术小白
展开
-
python--直接插入排序
'''直接插入排序是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表'''# 比较官方的直接插入法# 注释掉两行,结果是一样的,个人认为这两行无用,接受反驳def InsertSort(list): count = 0 for i in range(1,len(list)): # if list[i]<list[i-1]:...原创 2019-08-02 16:52:23 · 148 阅读 · 0 评论 -
Python--冒泡排序及其优化
# 元素交换def swap(list,i,j): temp = list[i] list[i] = list[j] list[j] = temp# 普通冒泡排序def BobbleSort1(list): count = 0 for i in range(len(list)): for j in range(len(list)-2,...原创 2019-08-01 19:20:19 · 287 阅读 · 0 评论 -
python--简单选择排序
'''简单选择排序就是通过n-i次关键字间的比较,从n-i+1个元素中选出最小值与第i个值交换'''def SelectSort(list): count = 0 move = 0 for i in range(len(list)-1): min = i for j in range(i+1,len(list)): ...原创 2019-08-02 11:31:31 · 192 阅读 · 0 评论 -
python--希尔排序
'''希尔排序,将相聚某个'增量'的记录组成一个子序列,这样才能能保证在子序列内分别进行直接插入排序后得到的结果是基本有序而不是局部有序'''def ShellSort(list): increment = len(list)//(len(list)//2)+1 # 增量的选取有待进一步研究 # 增量序列的最后一个增量必须是1 while incremen...原创 2019-08-06 16:19:26 · 107 阅读 · 0 评论 -
python--归并排序
'''归并排序,假设初始序列含有n个记录,可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2](不小于n/2的最小整数)个长度为2或1的有序子序列,再两两归并,如此重复,直到得到一个长度为n的有序序列为止,这样的排序方法称为2路归并排序'''def MSort(list): if len(list)==1: # print(list)...原创 2019-08-07 16:58:26 · 102 阅读 · 0 评论 -
python--快速排序
'''快速排序,将待排序序列通过一趟排序分为独立的两个序列,其中一个序列的值均比另一个序列的值小,对这两部分继续进行分组,以达到序列有序的目的'''def QuickSort(list,start,end): left,right = start,end if left >= right: return mid = list[start] ...原创 2019-08-07 19:13:37 · 106 阅读 · 0 评论