![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Lovehanxiaoyan
这个作者很懒,什么都没留下…
展开
-
python算法之归并排序
将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。def merge_sort(li): if len(li) <= 1: return li # 二分分解 num = len(li)//2 left ...原创 2020-01-13 10:33:56 · 145 阅读 · 0 评论 -
python算法之希尔排序
希尔排序的基本思想是:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一列了。将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序。li= [84,36,21,14,72,31,98,46,58]def xi_er(li): n = len(li) # 初始步长 gap = n //...原创 2020-01-10 11:09:56 · 121 阅读 · 0 评论 -
python算法之快速排序
li = [84,36,21,14,72,31,98,46,58]def quick_sort(li, start, end): """快速排序""" # 递归的退出条件 if start >= end: return # 设定起始元素为要寻找位置的基准元素 mid = li[start] # low为序列左边的由左向右...原创 2020-01-09 15:01:01 · 140 阅读 · 0 评论 -
python算法之插入排序
li = [84,36,98,14,72,31,46,58,21]def charu(li): # 从第二个位置,即下标为1的元素开始向前插入 for i in range(1, len(li)): # 从第i个元素开始向前比较,如果小于前一个元素,交换位置 for j in range(i, 0 -1): if li[...原创 2020-01-07 17:34:44 · 133 阅读 · 0 评论 -
python算法之选择排序
方法一:li = [84,36,98,14,72,31,46,58,21]def xuan(li): n = len(li) # 需要进行n-1次选择操作 for i in range(n-1, 0, -1): # 记录最大位置 max_index = i # 从i+1位置到末尾选择出最小数据 ...原创 2020-01-07 16:44:27 · 116 阅读 · 0 评论 -
python算法之冒泡排序
li = [84,36,98,14,72,31,46,58,21]def mao(li): for i in range(len(li)-1, 0, -1): # i的取值依次是8 7 6 5 4 3 2 1 for j in range(i): if li[j] > li[j+1]: li[j], li[j...原创 2020-01-07 16:30:59 · 110 阅读 · 0 评论