基尔霍夫的猫 2019-11-16
讲一组有顺序的元素按大小(只要定义可以返回true或false的比较关系,非一定数值比较)重新调整顺序。
思维上最直接的方式吧,将原序列元素一个个取出,放回时找到合适位置放入b,既a<=b<c。
long long int* elrSortInsert(long long int* arr, int len) {
int i, j, k;
long long int n;
if (arr) {
for (i = 1; i < len; i++) {
n = arr[i];
for (j = i - 1; j >= 0; j--) {
if (arr[j] > n) {
arr[j + 1] = arr[j];
arr[j] = n;
for (k = 0; k < len; k++) {
printf("%lld ", arr[k]);
}
printf("\n");
} else {
break;
}
}
}
}
return arr;
}int main(int argc, char **argv){
long long int arr[] = {6, 2, 4, 1, 3, 5, 0};
elrSortInsert(arr, 7);
return 0;
}2 6 4 1 3 5 0 2 4 6 1 3 5 0 2 4 1 6 3 5 0 2 1 4 6 3 5 0 1 2 4 6 3 5 0 1 2 4 3 6 5 0 1 2 3 4 6 5 0 1 2 3 4 5 6 0 1 2 3 4 5 0 6 1 2 3 4 0 5 6 1 2 3 0 4 5 6 1 2 0 3 4 5 6 1 0 2 3 4 5 6 0 1 2 3 4 5 6