
比较,移动

免去了查找过程中,每一步都要检测整个查找表是否查找完毕,提高了查找效率

N-1,而不是N次

O(N^2) O(N^2)

算法的时间复杂度是根据比较次数来衡量的,而不是交换次数
直接选择算法,比较次数(时间复杂度),固定为O(N^2)
而交换次数,在最好情况下的交换次数为0

题中实际问的是,进行两次归并后的结果

易错

注意不要抄错

严蔚敏版快速排序: 遇到与pivot相同的元素,是不进行交换的,继续前进,无论是high指针,还是low指针
浙大版快速排序:从效率角度,遇到与pivot相同的元素,是需要停止前进,进行交换的

每次划分都能得到两个长度相同的子文件
而不应回答:大量元素且无序

易错

2 ^ h - 1 , 2 ^ (h-1)

建堆

常见的建堆方法有两种,一种是插入法建堆,将元素一个一个的插入到一个空的堆中,每一次插入最多需要比较logN次,N个元素就是NlogN
第二种方法就是筛选法建堆,也就是从第一个非叶子节点开始,逐渐调整到根节点

稳定排序

快排在有序的时候,是最慢的, 在有序的情况下,冒泡排序时间复杂性优于堆排序

简单选择排序 , 直接插入排序
希尔排序,基数排序,归并排序呢?是不是也可能不在最终位置上

初始归并端,初始归并端,减少归并趟数,增加归并路数和减少归并段个数

时间复杂性为O(N*logN)的,有快排,归并,堆排序
稳定的,只有归并排序,
就地排序,只有堆排序

生成有序归并段 , 归并

初始归并段

不会做