基于数组的插入排序,可以从头开始找,也可以从尾开始找,从头找需要两个循环或者一个buffer,从尾找的只用一个循环就可以,写起来相对简单。
// small -> big, tail -> head
void insert_sort(int a[], int aLen, int num) {
int i;
for (i = aLen; i > 0; i--) {
if (a[i-1] < num) {
a[i] = num;
return;
}
else {
a[i] = a[i - 1];
}
}
a[i] = num;
}
// big -> small, head -> tail
void insert_sort(int a[], int aLen, int num) {
int i, j;
for (i = 0; i < aLen; i++) {
if (num > a[i]) {
for (j = aLen-1; j > i; j--) {
a[j] = a[j - 1];
}
a[i] = num;
break;
}
}
网友评论