基尔霍夫的猫 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