排序
且听风吟zyw
这个作者很懒,什么都没留下…
展开
-
Python八大排序(一)——冒泡排序
代码如下: #1.冒泡排序(属于交换排序):序列中的元素左右比较,保证右边的元素始终大于左边,第一轮结束最右边一定为最大。 def Bubble_sort(num_list): for i in range(len(num_list)): for j in range(i,len(num_list)): if num_list[i] > num...原创 2019-08-31 14:30:19 · 254 阅读 · 0 评论 -
Python八大排序(二)——选择排序
代码如下: #2.简单选择排序:比较+交换 每次从剩下的挑最小的放在前面 #第一层循环:依次遍历序列中每一个元素 #第二层循环:将遍历得到的当前元素依次与余下的元素进行比较,符合最小则交换。 def Select_sort(num_list): for i in range(len(num_list)): min_value_index = i for j ...原创 2019-08-31 14:35:10 · 154 阅读 · 0 评论 -
Python八大排序(三)——直接插入排序
代码如下: #3.直接插入排序: #第一层循环:遍历待比较列表中的每个元素 #第二层循环:将本轮选择的元素与已经排好序的元素相比,升序排序,跟冒泡排序差别在于,冒泡是向后遍历,这个是向前遍历。 def Insert_sort(num_list): for i in range(len(num_list)): for j in range(0,i): ...原创 2019-08-31 14:40:12 · 189 阅读 · 0 评论 -
Python八大排序(四)——希尔排序
代码如下: #4.希尔排序(插入排序) #思想:将待排序数组按照步长gap进行分组,然后将每组的元素利用直接插入排序的方法进行排序,每次将gap折半减小,循环上述操作。 #当gap=1时,利用直接插入,完成排序。 def Shell_sort(num_list): length = len(num_list) gap = length // 2 while gap >...原创 2019-08-31 15:00:32 · 180 阅读 · 0 评论 -
Python八大排序(五)——快速排序
代码如下: #5.快速排序(交换排序) #思想:先找一个虚拟的中间值,按此中间值将所有数据分为两部分,小于中间值的数据放在左边大于中间值的放在右边,在以同样的方式处理 #左右两边的数据直到排完序为止。 def Quick_sort(num_list): if len(num_list) < 2: return num_list left_list = [] ...原创 2019-08-31 15:13:30 · 205 阅读 · 1 评论 -
Python八大排序(六)——归并排序
代码如下: #6.归并排序 #思想:将N个长度为1的键值,成对合并成N/2个长度为2的键值组 #将N/2 2 N/4 4 #... #直到合并为1组长度为N的键值组为止 def Merge_sort(num_list): if len(num_list) <= 1: return num_list...原创 2019-08-31 15:53:42 · 156 阅读 · 0 评论 -
Python八大排序(七)——桶排序
代码如下: #7.桶排序 def Tong_sort(num_list): max_num =max(num_list) #选择一个最大的数 bucket = [0]*(max_num+1) #创建一个元素全为0的列表,当作桶。 for i in num_list: #把所有元素放入桶中,即把对应元素个数加一 bucket[i] += 1 ...原创 2019-08-31 16:24:19 · 199 阅读 · 0 评论 -
Python八大排序(八)——堆排序
堆排序涉及到的概念 堆排序是利用 堆进行排序的 堆是一种完全二叉树 堆有两种类型: 大根堆 小根堆 两种类型的概念如下: 大根堆:每个结点的值都大于或等于左右孩子结点 小根堆:每个结点的值都小于或等于左右孩子结点 因为比较抽象,所以专门花了两个图表示 那么,什么是完全二叉树呢? 完全二叉树 是 一种除了最后一层之外的其他每一层都被完全填充,并且所有结点都保持向左对齐的树,向左对齐指的是: 像...原创 2019-08-31 17:29:10 · 412 阅读 · 0 评论