no_russion 2019-02-28 19:10 采纳率: 33.3%
浏览 427
已采纳

归并排序问题,代码是按照教学视频打的,为什么会出错,显示一些奇奇怪怪的数字

如题,不知道是哪里疏漏了,请各位大神指教

#include<stdio.h>
#include<stdlib.h>

void merging(int list1[],int list1_size,int list2[],int list2_size)
{
    int temp[8],i=0,j=0,k=0;
    while(i<list1_size&&j<list2_size)
    {
        if(list1[i]<list2[j])
        {
            temp[k++]=list1[i++];
        }
        else
        {
            temp[k++]=list2[j++];
        }
    }
    while(i<list1_size)
    {
        temp[k++]=list1[i++];
    }   
    while(i<list2_size)
    {
        temp[k++]=list2[j++];
    }   
    for(int m=0;m<(list1_size+list2_size);m++)
    {
        list1[m]=temp[m];
    }
}
void merge_sort(int k[],int n)
{
    if(n>1)
    {
    int *list1=k;
    int list1_size=n/2;
    int *list2=k+n/2;
    int list2_size=n/2;
    merge_sort(list1,list1_size);
    merge_sort(list2,list2_size);
    merging(list1,list1_size,list2,list2_size);
    }
}

int main()
{
    int a[8]={3,41,52,26,38,57,9,49};
    merge_sort(a,8);
    for(int i=0;i<8;i++)
        printf("%d ",a[i]);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 孤独mk 2019-02-28 20:56
    关注

    while(i<list2_size)
    {
    temp[k++]=list2[j++];
    }

    这句中i改为j

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式