![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
谷大神
这个作者很懒,什么都没留下…
展开
-
归并排序 python
'''将序列分成左右两份,然后对每一份再进行该操作,直至分为长度为2或者一为止然后对最小序列进行排序,排序之后返回上一层,合并排序之后的两个子序列。直至返回到合并成原序列大小位置,此时排序完成'''def divide(list): if len(list) > 2: return list[:len(list) // 2], list[len(list) // 2:] else: return listdef panduan(list_原创 2020-06-02 09:18:11 · 249 阅读 · 0 评论 -
快速排序 python
第一次写,编程算法能力太差,可能程序过于复杂臃肿,希望通过以后的学习,再回头看可以进行修改精简。'''先从待排序序列中选出一个数作为基准,然后对除该数外的其它数进行分区,小于该数的排在其左边,大于的放在右边,按顺序放即可,不在意大小顺序。分区之后,新序列分为三部分,[小于基准,基准,大于基准],然后再对基准两侧序列分别进行上述操作,直至待分区的子序列只有一个数位置。完成排序。'''def toSort(list): temp = list[0] temp_list_left =原创 2020-06-02 09:11:33 · 98 阅读 · 0 评论 -
选择排序 python
'''首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。初始状态:无序区为R[1..n],有序区为空;第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1原创 2020-05-25 15:00:47 · 126 阅读 · 0 评论 -
冒泡排序 python
'''比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。'''def bubbleSort(list): for i in range(len(list) - 2): for j in range(len(list) - 1 - i): if list[j] > list[原创 2020-05-25 14:59:48 · 148 阅读 · 0 评论 -
希尔排序 python
'''插入排序的进阶版按照步长n将数据分成n个序列,每个序列进行插入排序完成上述排序,减小步长(一半),继续进行插入排序重复上述步骤,直至步长变为1。'''def ShellSort(list): step = len(list) // 2 while step > 0: for i in range(step, len(list)): index = i while index > step-1:原创 2020-05-25 14:56:41 · 157 阅读 · 0 评论 -
插入排序 python
'''通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后;重复步骤2~5。'''def insertionSort(list): for i原创 2020-05-25 14:55:37 · 143 阅读 · 0 评论