插入排序:把当前第i个元素插入到应在的位置.为目标元素寻找位置
1.直接排序:像扑克牌一样,新建一个队列,一张一张地根据手里已有的牌排序.
2.希尔排序:先从中间对半分成两个队列,然后两个队列由前到后一对一对比排序;然后根据单双数分成两个队列,分别排序,总体所在位置不变;然后在整体排序.
选择排序:每次为第i个位置寻找合适的元素,然后放入该位置.为目标位置寻找元素
3.简单选择排序:从第一个位置开始,搜索选择最小的数放在该位置,后面以此类推.
4.堆排序:二叉树方式,类似于二分法,分为大根堆和小根堆.大根堆:通过一系列对换分别把两个主分支中最大的数放到分支顶端,然后把最大的选择到顶端后输出,再把最小的数放到顶端,.....再通过一系列对换.....,后面一次类推.
交换排序:针对每个i元素与相邻元素比较,若他们的相对顺序与目标排序顺序不同,则交换.
5.冒泡排序:每个元素,与前面相邻的元素比较,若他们的相对顺序与目标排序顺序不同,则交换.
6.快速排序:每个i元素把队列分成两截,前半都比它小,后半都比它大.方法:每次从两头寻找,若前端找到比i元素大的,就等后端找到比i元素小的然后交换,直到两端的寻找相遇,则让i与相遇点的元素交换,后面以此类推.
7.归并排序:递归合并排序,分成2个n/2个元素的子序列,然后递归排序,回溯到其子序列最多只有2个元素一组的时候对所有子序列排序,然后不断递归合并再排序.
8.基数排序:桶排序,有局限性,10个"桶"对应数字0~9,先按个位排序,再按十位排序,一次类推直到最高位.
10个数进行排序的用时排序:冒泡排序>选择排序>快速排序/插入排序>归并排序/基数排序/堆排序/希尔排序.
冒泡和选择最耗时,插入排序和快速排序看情况,有时是最快的,剩下的都比较省时.
关于排序是否是稳定排序:可以假设队列中由相同值得元素,排序过后如果这两个值得前后位置一定不变,则是稳定排序.
参考文章:https://blog.csdn.net/lyhkmm/article/details/78920769