编辑代码

#include <stdio.h>

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");
}