用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等( 二 )


文章插图
 
平均时间复杂度O(nlogn)
归并排序思路

  1. 将列表拆分成两个有序子模块
  2. 递归拆分
  3. 子模块内部进行排序并合并成大的模块
  4. 递归合并
图示
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 
代码
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 
平均时间复杂度O(nlogn)
计数排序思路
  1. 找出集合中最小数m和最大数n
  2. 建一个长为(m-n+1)的列表count_list,所有元素初始化为0
  3. 遍历集合,元素减去n得到的结果作为index,将count_list该位上的元素加1 。
  4. 初始化空列表result 。
  5. 将count_list序列化,用索引值减去n,得到的结果追加到result中,索引值对应的位元素值减1,直到它为0 。
  6. 重复步骤5 。
图示
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 
代码
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 
平均时间复杂度O(n)
桶排序前言桶排序是将待排序集合中处于同一个值域的元素存入同一个桶中,也就是根据元素值特性将集合拆分为多个区域,则拆分后形成的多个桶,从值域上看是处于有序状态的 。对每个桶中元素进行排序,则所有桶中元素构成的集合是已排序的 。
思路
  1. 根据待排序集合中最大元素和最小元素的差值范围和映射规则,确定申请的桶个数;
  2. 遍历待排序集合,将每一个元素移动到对应的桶中;
  3. 对每一个桶中元素进行排序,并移动到已排序集合中 。
图示
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 
代码
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 
平均时间复杂度O(n^2)
基数排序思路
  1. 首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶中;
  2. 接下来将这些桶中的数值重新串接起来,成为以下的数列 。接着再进行一次分配,这次是根据十位数来分配;
  3. 接下来将这些桶中的数值重新串接起来,持续进行以上的动作直至最高位数为止 。
图示
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
【用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等】 
代码
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 
平均时间复杂度O(d*2*n), 这里的d是数值位数
本文来自热心好友原味吐司的投稿,点赞!
更多有关python、深度学习和计算机编程的精彩内容,可以关注微信公众号:哆啦A梦爱学习
用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 

用Python实现十大经典排序算法-插入、选择、快速、冒泡、归并等

文章插图
 




推荐阅读