算法 - 排序复习

基本插入排序数组

插入排序是面向链表结构的排序方法blog

插入排序的基本思想:排序

对于数组arr = [a0, a1, a2, ... , an]递归

  1. 从i=0开始,排好序的集合是{a0}
  2. 假设0-i个元素已经有序,有序集合是{a0, a1, ..., ai}
  3. 取第ai+1个元素,将其与有序集合从ai开始向前依次比较,直到遇到比ai小的元素aj
  4. 将ai插入链表中aj元素后
  5. 第an个元素插入后{a0, ... ,an}集合是已经排好序的了

盗一张很是形象的动图:变量

 

快速排序搜索

快速排序是对冒泡排序的一种改进方法

  1. 设置两个变量i、j,开始时,i=0,j=n-1
  2. 以第一个数组元素做为key,即key=a[0]
  3. 从j开始向前搜索,找到第一个小于key的值a[j],互换a[j]和a[i]
  4. 从i开始向后搜索,找到第一个大于key的值a[i],互换a[j]和a[i]
  5. 直到i==j时,第一次排序完成,此时key位置前面的数字都小于key,后面的数字大于key
  6. 对key前面的区间和后面的区间再分别进行排序,直到全部递归区间所有排序完成

盗一张维基百科的图:im

相关文章
相关标签/搜索