You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我实现的插入排序算法输出值的地址而非正确结果?

插入排序问题修复

代码里的两个核心问题

  • 内层循环缺少终止条件:当temp >= a[j]时,本该停止移动元素,但原代码会一直循环到j=-1,导致每次都把temp插到数组最开头,完全起不到排序作用
  • 所谓“返回值的地址”是输出方式错误:C语言里直接打印数组名(比如printf("%d", a)),数组名会退化为指针地址,必须遍历数组逐个打印元素

修正后的插入排序代码

void insertion_sort(int a[], int size){
    int i,j,temp;
    for(i=1;i<size;i++){
        temp = a[i];
        // 内层循环添加条件:temp小于当前元素时才继续移动
        for(j=i-1;j>=0 && temp < a[j];j--){
            a[j+1] = a[j];
        }
        a[j+1] = temp;
    }
}

正确的数组输出示例

排序后要打印结果,得遍历数组元素:

int arr[] = {3,1,4,2};
int size = sizeof(arr)/sizeof(arr[0]);
insertion_sort(arr, size);
// 逐个打印数组元素
for(int k=0;k<size;k++){
    printf("%d ", arr[k]);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:21