Skip to content

Latest commit

 

History

History
31 lines (15 loc) · 1.16 KB

sort.md

File metadata and controls

31 lines (15 loc) · 1.16 KB

记录几种常见的排序算法的实现思路

O(n^2)

排序源码

  • 冒泡排序

依次遍历,相邻元素比较,left>right则交换,一轮下来则最右边为最大值,最多N-1(元素的总数)轮下来则排序完毕,flag标记该轮是否有交换来优化

  • 插入排序

维护一段有序区间,从大到小依次遍历有序区间和无序区间的头元素进行比较,若小于头元素则当前有序区间索引向右移动一位,若大于头元素则直接结束并将当前无序值付给有序索引

  • 选择排序

直接从无序区间中获取最小值插入到有序区间末尾即可

O(nlogn)

  • 归并

使用分治思想进行排序,取索引中点进行分区,最后合并的时候就行排序重组,由于合并不通分区需要借助额外的空间,非原地排序,空间复杂度O(n)

  • 快排

也是分治思想,不过相对于归并的先分后排来说,快速排序的核心在与分区函数.通过分区函数获取基准点然后进行分治递归. 分区函数的实现方式是通过自选的基准 值划分高低区域然后进行递归