分为有序区和无序区进行排序:
1、插入排序
将数组分为有序区和无序区。默认第一个数是有序区,后面的数依次往前遍历找到自己的位置。
2、希尔排序
插入排序的优化算法。对于基本有序的数组效率更高。思路是当小数在后时,尽量减少不必要的比较、转换消耗。
3、选择排序
将数组分为有序区和无序区,每次从无序区遍历出最大值和最小值,插入有序区。
4、冒泡排序
将数组分为有序区和无序区,每次从无序区遍历出最大值或最小值,插入有序区。
使用二叉树进行排序:
堆排序:
将数组构造成堆,使用堆调整进行排序。
堆,向下调整算法,向上调整算法,数组建堆算法,堆排序,建堆时间复杂度的推理_双鱼211的博客-CSDN博客_堆调整算法
分而治之:
1、快速排序
思路:分为小区和大区,递归。不适合基本有序的数组。
选取中间值,中间值左边区域,右边区域。小于中间值放左边,大于中间值放右边。(如何移动,元素置换最少?)
2、归并排序
思路:切半,递归切为多个长度为1数组,再作为有序数组两两合并成有序数组。