因为最近有个面试,所以在看看排序,顺便总结一下(直接手写并未测试)
插入排序(应该有多种写法)
描述:前面都有序 ,都是从有序的下一位排(开始排的时候只有A[1]是有序的 A[0]是哨兵)
// 从2开始是因为0是哨兵(也就是待排序的值),1是
for(int i=2;i<=n;i++){
A[0] = A[i];//i是待排序的值
for(int j = i-1;A[0]>A[j];j--){
//中间是比较带插入值和前一位的值 符合 后移一位
A[j+1] = A[j];
}
/**
1 因为插入 排序是 排过之后 前面是有序的 所以
2 不满足上面的话(A[0]>A[j] )就是这趟排序好了此时的j的下一位就是需要插入的位置()
3 空位复制进待插入值(A[0]),
**/
A[j+1] = A[0];
}