排序

十大排序算法:冒泡、插入、选择、希尔、快速、归并、堆、计数、桶、基数

分类:

* 插入排序、希尔排序

希尔排序是插入排序改良版本,按步长跳跃产生子序列,子序列采用插入排序;步长逐步(n/2,n/4,n/8...1)缩小到1,即可。

* 冒泡排序、快速排序

快速排序可认为借鉴冒泡排序,将其中大于基数哪些项冒泡到右边,小于基数那些项沉淀左边。逐渐左右分治,递归缩小长度;对于小于阈值后,采用插入排序。

* 选择排序、堆排序?

堆排序源于竞技类体育比赛。

* 归并排序

从有序到有序,小数组merge成大数组,一直保持有序。

* 计数排序、桶排序、基数排序

线性算法,很快不过内存消耗大。

* 对比

  最好时间 最差时间 平均时间 空间 位置 稳定性
插入排序 n n2 n2 1   稳定
希尔排序 n n2 n1.3 1   不稳定
冒泡排序 n n2 n2 1   稳定
快速排序 n n2 nlogn 1   不稳定
选择排序 n2 n2 n2 1   不稳定
堆排序     nlogn 1   稳定?
归并排序     nlogn n   稳定?
计数排序 n n n k   不稳定
桶排序     n?     不稳定?
基数排序     n?     不稳定?

* std sort

小数据,插入排序

大数据,如果递归不深,快速排序

大数据,递归深,堆排序

循环上述三个步骤,直到排序完成

 

posted @ 2023-09-03 17:30  醉卧古藤下  阅读(13)  评论(0编辑  收藏  举报