You need to enable JavaScript to run this app. C语言数组冒泡排序异常:仅从第5位元素开始排序,前0-4位无效果
优惠活动
大模型
产品
解决方案
定价
更多

C语言数组冒泡排序异常:仅从第5位元素开始排序,前0-4位无效果

冒泡排序异常问题定位

核心问题成因

冒泡排序函数的内层循环起始下标设置错误,是前5个元素无法正常排序的直接原因:

  • 冒泡排序每一轮遍历需要从第1个相邻对(对应j=1,即比较array[0]与array[1])开始,逐次比较相邻元素
  • 当前代码的内层循环写为for(j = i+1 ; j < len ;j++),当外层循环变量i≥4时,j的起始值为i+1≥5,此时仅会比较下标≥4的相邻元素,完全不会覆盖索引0-3的相邻对,导致前5个元素的顺序再也无法调整
  • 内层循环未设置已排序的终止边界,每轮都会重复遍历末尾已排好的元素,进一步放大了逻辑错误的影响

修正方案

将bubble_sort_elements函数的循环逻辑修改为标准冒泡写法:

void bubble_sort_elements(int array[],int len)
{
    int i=0,j=0;
    // 外层循环控制排序轮数,共需len-1轮即可完成全排序
    for (i = 0; i < len - 1; i++)
    {
        printf("Number of Iteration: %d \n",i);
        // 内层循环从第1个相邻对开始,每轮仅遍历到未排序区间的末尾(最后i个元素已排好)
        for(j = 1 ; j < len - i ;j++)
        {
            if(array[j] < array[j-1])
            {
                swap(&array[j],&array[j-1]);
            }
        }
    }
}

其他可优化点

  • main函数中提示语为“请输入5个元素”,但实际循环读取了10个元素,需保持提示与实际逻辑一致
  • 最小值位置输出的代码sizeof(arr)/sizeof(arr[0])-sizeof(arr)/sizeof(arr[0])结果恒为0,写法冗余,可直接替换为0

内容的提问来源于stack exchange,提问作者EslamFayad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 15:27:03