| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 420 人关注过本帖
标题:选择排序法,大家帮忙看看哪里错了,无法正常输出
只看楼主 加入收藏
加冕
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2018-11-24
结帖率:62.5%
  已结贴   问题点数:20  回复次数:8   
选择排序法,大家帮忙看看哪里错了,无法正常输出
#include<stdio.h>
#define n 10
 int main()
{
    int i,j,k,max,a[n];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=n-1;i>=0;i--)
    {
        max=a[i];
        for(j=i-1;j>=0;j--)
        {
         if(max<a[j])
             max=a[j];
            k=j;
        }
        a[k]=a[i];
        a[i]=max;
    }
    for(i=0;i<n;i++)
        printf("%d",a[i]);
    return 0;
}
2018-11-25 17:08
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:30
帖 子:359
专家分:1040
注 册:2018-5-7
  得分:5 
看错了
我再看看

[此贴子已经被作者于2018-11-25 18:22编辑过]

2018-11-25 18:21
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:38
帖 子:1679
专家分:3206
注 册:2015-12-2
  得分:10 
#include<stdio.h>
#define n 10
 int main()
{
    int i,j,k,max,a[n];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=n-1;i>=0;i--)
    {
        max=a[i];
        k=i;
        for(j=i-1;j>=0;j--)
        {
         if(max<a[j])
            {
            max=a[j];
            k=j;   
             }
        }
        a[k]=a[i];
        a[i]=max;
    }
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    return 0;
}
2018-11-25 19:05
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:30
帖 子:359
专家分:1040
注 册:2018-5-7
  得分:0 
当你的i等于0时就出错了
2018-11-25 19:19
加冕
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2018-11-24
  得分:0 
回复 4楼 豆豆的滴
可以帮忙改一下吗?具体说明那一步有问题,谢谢

授人以鱼不如授人以渔请说一下用什么方法和需要学习什么来解决问题,谢谢大家
2018-11-25 21:07
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:30
帖 子:359
专家分:1040
注 册:2018-5-7
  得分:0 
我说错了
2楼改的没毛病
程序代码:
[code]for(j=i-1;j>=0;j--)
                         {
                           if(max<a[j])
                               {
                              max=a[j];
                              k=j;//a[j]你这样就是只要碰到比a[9]大的就会交换跳进下次的i循环那假如还有a[j]比之前那个还要大呢就无法排序了。
                                 } 
                          }

 /code]
2018-11-25 22:57
wlxy_wang
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:77
专家分:303
注 册:2018-11-2
  得分:5 
在外循环中,你没有给k赋初值。这样的k有可能在内循环中正确赋值,也有可能不能正确赋值,所以程序逻辑是存在问题的。还有,外循环终值不是0,应该是1


[此贴子已经被作者于2018-11-26 11:01编辑过]

2018-11-26 10:59
加冕
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2018-11-24
  得分:0 
回复 7楼 wlxy_wang
是说在内循环中的k要赋值在让k等于其他值是吗?,那么一般在循环嵌套里什么时候要赋值
类似max=max+i,max要赋值

授人以鱼不如授人以渔请说一下用什么方法和需要学习什么来解决问题,谢谢大家
2018-11-26 21:08
加冕
Rank: 2
等 级:论坛游民
帖 子:31
专家分:15
注 册:2018-11-24
  得分:0 
回复 7楼 wlxy_wang
可以说详细一点吗?我不太理解

授人以鱼不如授人以渔请说一下用什么方法和需要学习什么来解决问题,谢谢大家
2018-11-26 21:20







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026533 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved