| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1423 人关注过本帖
标题:各位高手来帮我看看为什么用打擂台法无法交换数组的职,求指导!
只看楼主 加入收藏
zqszqs10
Rank: 1
等 级:新手上路
帖 子:14
专家分:3
注 册:2016-10-27
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:1 
各位高手来帮我看看为什么用打擂台法无法交换数组的职,求指导!
#include<stdio.h>
main()
{
    void sort(int array[],int n);
    int array[10],i;
    printf("Enter 10 integer:");
    for(i=0;i<10;i++)
    {
        scanf("%d",&array[i]);
    }
    sort(array,10);
    for(i=0;i<10;i++)
    {
        printf("array[%d]=%d\n",i,array[i]);
    }
}
void sort(int change[],int n)
{
    int i,k,l,c,m;
    for(i=0;i<n;i++)
    {
        m=change[i];//m的值为change[i]的当前值
        for(k=i;k<n;k++)
        {
            if(m>change[k])//m也就是change[i]与后面各个值比大小
            {
                m=change[k];
                l=k;
            }
        }
        c=change[i];
        change[i]=change[l];
        change[l]=c;   
    }
}

输入职为:Enter 10 integer:45 2 9 0 -3 54 12 5 66 33
运行结果为:array[0]=-3  array[1]=0  array[2]=2  array[3]=5  array[4]=9  array[5]=12  array[
6]=33  array[7]=54  array[8]=45  array[9]=66  
array[7]与array[8],结果错误。
搜索更多相关主题的帖子: include change Enter 
2016-10-27 21:51
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:20 
if(m>change[k])//m也就是change[i]与后面各个值比大小
            {
                m=change[k];
                l=k;
            }
条件语句漏了个等号,没有考虑两个数相等的情况,如果相等则不执行该条件,加上等号之后
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-10-27 22:49编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-10-27 22:36
快速回复:各位高手来帮我看看为什么用打擂台法无法交换数组的职,求指导!
数据加载中...
 
   



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

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