为什么结果跟我预期的不一样

img

img


这个代码为什么跟我的预期不太一样?我是想把数组里的数字按由小到大的排列

你这个只能比较相邻两个数的大小,而且当i=6的时候arr[i+1]数组越界了

【以下回答由 GPT 生成】

问题的核心在于代码中的循环逻辑和排序算法逻辑的缺失。

首先,代码中没有循环语句,缺少对整个数组进行多次比较和交换的机制。只有一次对相邻元素的比较和交换,这将无法完整地进行排序。

其次,代码中的排序算法逻辑有误。该逻辑只处理相邻元素的大小比较,并进行交换,但并未考虑到整个数组的情况。整个数组的排序需要多次比较和交换。

解决方案: 1. 使用冒泡排序算法完成对数组的排序。冒泡排序是一种简单但效率较低的排序算法,其核心思想是多次遍历数组,每次遍历比较相邻元素并交换位置,直到数组排序完成。以下是冒泡排序的示例代码:

void bubbleSort(int arr[], int size) {
    for (int i = 0; i < size-1; i++) {
        for (int j = 0; j < size-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
  1. 调用上述的冒泡排序函数对数组进行排序。在你的代码中,可以将数组传入上述函数进行排序:
bubbleSort(arr, sizeof(arr)/sizeof(arr[0]));
  1. 修改你的打印代码。由于冒泡排序算法已经将数组进行了排序,你无需再次打印排序的结果。如果你想确认数组是否已经正确排序,可以在排序完成后再进行打印:
for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) {
    printf("%d\n", arr[i]);
}

通过以上修改,你的代码应该可以正常地实现对数组的从小到大排序操作。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^