void shell_sort(int num[], int n) { for (int incr = n / 2; incr > 2; incr /= 2){ //增量,从n/2 --> n/4 --> n/8 --> ... --> 2 for (int j = 0; j < incr; j++){// 对每个子表排序 insert_sort2(num, j, n - j, incr); //子表起始于j,结尾与n-j,增量incr } } insert_sort2(num, 0, n, 1); //最后,起始于0,结尾与n,增量1 }
int main(int argc, char **argv) { srand(time(NULL)); int r_array[100], i; for (i = 0; i < R_SIZE; i++) { r_array[i] = rand() % 100 + 1; /* generate random number between 1 and 100 */ } int a[KSIZE] = {5, 7, 0, 3, 4, 2, 6, 1}; insert_sort2(a, KSIZE); printf ("\n"); insert_sort2(r_array, R_SIZE); /* print(a); */ return 0; }
int main() { int a[10] = {23, 1, 34, 21, 11, 4, 5, 2, 1, 12}; for(int i = 0; i < 10; i++) { printf("a[%d]: %d \n", i, a[i]); } insert_sort(a, 10); for(int i = 0; i < 10; i++) { printf("a[%d]: %d \n", i, a[i]); } int b[]= {11 ,3 ,1 ,5 ,2 ,23 ,8 ,4 ,1 ,123}; for(int i = 0; i < 10; i++) { printf("b[%d]: %d \n", i, b[i]); } insert_sort2(b, 10); for(int i = 0; i < 10; i++) { printf("b[%d]: %d \n", i, b[i]); } return 0; }