u011475211
caoxwei2
采纳率98%
2014-12-22 08:27

程序出错不知道如何调试

已采纳

选择排序算法

 #include<stdio.h>

int main()
{
    int a[10]={23,10,7,9,15,88,65,50,3,40};
    int max=0,sub,temp;
    int i,j;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=10-i;j++)
            if(a[i-1]-a[i+j-1]>max)
            {
                max=a[i-1]-a[i+j-1];
                sub=i+j-1;
            }
        temp=a[i-1];
        a[i-1]=a[sub];
        a[sub]=temp;
        max=0;

    }
    for(i=0;i<=9;i++)
        printf("%d ",a[i]);




    return 0;
}

选择排序不知道错在哪里,求解,运行得不到正确答案

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • bdmh bdmh 7年前

    int a[10]={23,10,7,9,15,88,65,50,3,40};
    int max=0,sub,temp;
    int i,j;
    for(i=0;i<=9;i++)
    {
    sub=i;
    for(j=i+1;j<=9;j++)
    if(a[i]-a[j]>max)
    {
    max=a[i]-a[j];
    sub=j;
    }
    temp=a[i];
    a[i]=a[sub];
    a[sub]=temp;
    max=0;

    }
    for(i=0;i<=9;i++)
        printf("%d ",a[i]);
    
    点赞 评论 复制链接分享
  • s_mike s_mike 7年前

    这样做会出问题,当i=4时,10是没换位子 sub值就不会变,所以下一次 i=5时 15的也是最小的 sub值也没变的话 那就会交换

    点赞 评论 复制链接分享
  • h398085541 Tanky-黄 7年前

    程序员必须会调试,设置个断点进行调试。

    点赞 评论 复制链接分享

相关推荐