良序结构下的算法
排序算法
插入排序 insertion_sort
void insertion_sort(T A[]){
for (int i = 1; i < A.length; i++){
T temp = A[i];
j = i - 1;
while((j > 0) && (A[j] > temp)){
A[j+1] = A[j]; //互换即挪动,现实中没有位置挪动
j = j - 1;
}
A[i+1] = temp; //A[i+1]值相同的有两个,相当于插入
}
}
循环终止时发生了什么?
循环不变性
最坏情况 平均情况
分而治之
分解 -> K.O. -> 合并
随机算法
堆排序
快速排序
线性时间排序 计数 基数 桶