
十大经典排序算法
wwwsctvcom
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
十大经典排序算法:选择排序
一、算法复杂度 二、算法步骤 1、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 2、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 3、重复第二步,直到所有元素均排序完毕; 三、代码实现(python版本) 其他版本的代码已经很多了,这里出个Python版本的; test = [4, 2, 5, 3, 6] def selection_sor...原创 2019-08-04 00:01:53 · 444 阅读 · 0 评论 -
十大经典排序算法:堆排序
一、算法复杂度 二、算法流程 1、创建一个堆,即完全二叉树,使用递归调用将全部最大值放到根的位置; 2、然后将最大值进行保存,这一次就会少一个数字进行建堆,对剩下部分进行建堆,重复第一步; 3、最后可以得到排序之后的序列; 三、代码实现 方法一:使用标准python库进行排序; import heapq def heap_sort(arr): heapq.heapify...原创 2019-08-06 15:58:54 · 190 阅读 · 0 评论 -
十大经典排序算法:冒泡排序
一、算法复杂度 二、算法流程 1、遍历每个数据,对每个数据和其后的数据进行比较,如果第一个较大进行交换,相当于把最大值放到最后; 2、每次排序会去除掉最后一个最大的值,再将前面部分进行排序一次; 三、代码实现 def swap(arr, i, j): tmp = arr[i] arr[i] = arr[j] arr[j] = tmp def bubble_...原创 2019-08-05 12:03:05 · 234 阅读 · 0 评论 -
十大经典排序算法:桶排序
一、算法复杂度 二、算法流程 1、创建固定数量的桶,每个桶存放一个范围的数据; 2、对每个桶内的内容进行插入排序或者快速排序; 3、把每个桶进行合并,组合成一个排序好的数组; 三、代码实现 def insert_sort(s): arr = s[:]#复制s for i in range(1, len(arr)): tmp = arr[i]#待插入...原创 2019-08-05 11:12:27 · 232 阅读 · 0 评论 -
十大经典排序算法:计数排序
一、算法复杂度 二、算法流程 1、获取序列中最大值和最小值,创建一个索引从最大值到最小值,且值索引对应的值全部为0的字典; 2、遍历需要排序的序列,计数每个数字出现的次数,存放在创建的字典中; 3、取出字典中对应的索引值即序列中的值,取出一次,索引对应的值减少一个,直到取完为止; 三、代码实现 def get_max_value(arr): #return max(arr...原创 2019-08-04 23:14:19 · 252 阅读 · 0 评论 -
十大经典排序算法:归并排序
一、算法复杂度 二、算法流程 1、首先从两个已经排序的序列中挨着选择最小的元素放入另外一个存储空间中合并为一个新的排序序列; 2、当第一个步骤完成之后,将两个序列中剩下的已经排序好的序列添加到新的排序序列后面; 三、代码实现 def merge_two(arr_left, arr_right): #合并两个已排序好的序列 arr_res = [] whi...原创 2019-08-04 16:17:57 · 408 阅读 · 0 评论 -
十大经典排序算法:希尔排序
一、算法复杂度 二、算法步骤 1、选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1; 2、按增量序列个数 k,对序列进行 k 趟排序; 3、每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。 三、代码实现 import...原创 2019-08-04 16:27:30 · 233 阅读 · 0 评论 -
十大经典排序算法:快速排序
一、算法复杂度 二、算法流程 1、寻找一个基准值pivot,将小于基准的放到基准的左边,大于基准的放在右边,这个操作叫做partition; 2、递归的将基准左边和右边的子序列重复上面的步骤; 三、代码实现 import copy def swap(arr, i, j): tmp = arr[i] arr[i] = arr[j] arr[j] = tmp ...原创 2019-08-04 10:52:09 · 358 阅读 · 0 评论 -
十大经典排序算法:插入排序
一、算法复杂度 二、算法过程 1、将第一个元素作为已排序序列,将剩下的作为未排序序列; 2、将未排序序列的元素和已排序序列进行比较,将未排序序列的元素插入排序序列的适当位置; 三、代码实现 import copy test = [3, 5, 4, 7, 2] def insert_sort(s): arr = copy.deepcopy(s)#复制s for i ...原创 2019-08-04 09:06:14 · 663 阅读 · 0 评论 -
十大经典排序算法:基数排序
一、算法复杂度 二、实现流程 1、寻找最长元素的位的数量; 2、按照最低位值的大小进行排序,然后再按照次高位的值排序; 3、直到每一个位都比较之后就能得到最终的排序结果; 三、代码实现 import numpy as np def radix_sort(arr): max_val = arr[0] #获取最大值:max_val = max(arr) for...原创 2019-08-06 11:27:17 · 223 阅读 · 0 评论