int main () {
void print(int arr[]);
int arr[] = {9,8,1,7,6,3,4,5,4,1};
for (int i = 10 / 2; i >= 1; i /= 2) {
printf("当前i为 %d\n", i);
for (int j = 0; (j + i) < 10; j++) {
printf("正在比较第%d位和第%d位,%s\n", j, j + i, arr[j] > arr[j + i] ? "大于,交换" : "小于,不改变");
if (arr[j] > arr[j + i]) {
int temp = arr[j];
arr[j] = arr[j + i];
arr[j + i] = temp;
print(arr);
}
}
}
print(arr);
return 0;
}
void print(int arr[]) {
printf("[");
for (int i = 0; i < 10; i++) {
if (i == 9) {
printf("%d", arr[i]);
break;
}
printf("%d, ", arr[i]);
}
printf("]\n");
}