c语言学习

23 阅读1分钟

int main() {
    // 定义存储5个整数的数组
    int arr[5];
    int i, j, temp;
    // 标记是否发生交换,用于优化冒泡排序
    int isSwitch;

    // 提示用户输入5个整数
    printf("请输入5个整数(以空格分隔):");
    for (i = 0; i < 5; i++) {
        scanf("%d", &arr[i]);
    }

    // 优化版冒泡排序
    for (i = 0; i < 4; i++) {  // 外层循环:控制排序轮数,最多4轮(5个元素)
        isSwitch = 0;          // 初始化为0,表示本轮未发生交换
        // 内层循环:每轮将最大元素"冒泡"到末尾,已排序部分无需比较
        for (j = 0; j < 4 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换相邻元素
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                isSwitch = 1;  // 标记发生了交换
            }
        }
        // 若本轮无交换,说明数组已有序,提前终止排序
        if (isSwitch == 0) {
            break;
        }
    }

    // 输出排序后的数组
    printf("排序后的数组为:");
    for (i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

image.png