排序——01
本文主要内容: 1.插入排序 2.希尔排序 3.直接选择排序 4.堆排序 1.排序:默认情况下为非降序排序 2.稳定性:能够保证排序过程中相同的数据排序前后相对位置不变 3.插入排序:减治算法排序 每次从无序区间选择第一个数插入到有序区间的合适位置(打牌) 时间复杂度:最坏o(n的平方):完全逆序 最好o(n):完全有序[从后往前找] 一般情况:o(n的平方) 越接近有序,执行时间效率越高 空间复杂度:o(1) 稳定性:稳定 计时:long begin = System.naoTime ();long end = System.naoTime (); System.out.println(end-begin); 4.希尔排序(Shell Sort):分组进行插入排序 分组越多:大数据可以很快走到最后,每次分组排序后,数据不太有序 分组越少:每次分组排序后,数据更有序 size = 10;gap = size; gap = gap/3+1;[4,2,1] gap = gap/2;[5,2,1] 前提:利用插入排序中,数据越接近有序,时间效率越高。在插入排序之前做预排序(分组插排),使数据尽可能接近有序。 如何分组:一开始分很多组,越来越少 时间复杂度:最好:o(n) 平均:O(n 1.3,n 1.4) 最坏:O(n^2) 空间复杂度:O(1) 稳定性:不稳定