| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5039 人关注过本帖
标题:输入10个数字,使用选择排序的方法,将输入数字从小到大输出,然而,我输入 ...
只看楼主 加入收藏
涧边幽草
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-11-4
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:15 
输入10个数字,使用选择排序的方法,将输入数字从小到大输出,然而,我输入 5 2 3 1 8 9 7 6 0 4时,却输出0 0 0 0 0 0 0 0 0 4
输入10个数字,使用选择排序的方法,将输入数字从小到大输出
然而,我输入 5 2 3 1 8 9 7 6 0 4时,却输出0 0 0 0 0 0 0 0 0 4,我却不知错哪
#include <stdio.h>
#include <stdlib.h>
void sort(int array[],int n);
#define N 10
int main()
{
    int i,a[N];
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    sort(a,10);
    return 0;
}
void sort(int array[],int n)
{
    int i,j,min1,min2,temp;
    //min=array[0];
    for(i=1;i<n;i++)
    {
        min1=array[i-1];
        for(j=i;j<n;j++)
        {
            if(min1>array[j]) min1=array[j];
        }
        min2=min1;
        temp=array[i-1];
        array[i-1]=min2;
        min2=temp;
        printf("%d",min2);
    }
    printf("\n");
    for(i=0;i<n;i++) printf("%d",array[i]);
}
搜索更多相关主题的帖子: include return 
2015-11-16 18:10
丁松
Rank: 2
来 自:重庆
等 级:论坛游民
威 望:1
帖 子:41
专家分:75
注 册:2015-11-11
收藏
得分:5 
//输入10个数字,使用选择排序的方法,将输入数字从小到大输出
//然而,我输入 5 2 3 1 8 9 7 6 0 4时,却输出0 0 0 0 0 0 0 0 0 4,我却不知错哪
#include <stdio.h>
#include <stdlib.h>
void sort(int array[]);
#define N 10
void main()
{
    int i;
    int a[N];
    printf("input 10 numbers:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    sort(a);
}
void sort(int array[])
{
    int i,j,temp;
    for(i=0;i<N;i++)
        for(j=0;j<N-i;j++)
        if(array[j]>array[j+1])
        {
            temp=array[j];
            array[j]=array[j+1];
            array[j+1]=temp;
        }
        printf("the sorted numbers:\n");
    for(i=0;i<N;i++)
        printf("%d ",array[i]);
    printf("\n");
}
2015-11-16 20:44
涧边幽草
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-11-4
收藏
得分:0 
回复 2楼 丁松
这应该是冒泡排序吧,我上面用的的选择排序,可是却不知哪里出错,大哥,帮我看看
2015-11-16 21:11
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:5 
要理解什么叫选择排序:选择排序是每次内循环找到最大或最小数组下标,在外循环里比较下标是否有不同,如不同则交换数据。通常情况下,选择法比冒泡法交换数据次数少些,可提高排序效率。你的错误在于每次找到数组最小的数0,然后再把它放到外循环指定的数组元素里,最后一个居然没放,不然就全0了。

能编个毛线衣吗?
2015-11-16 21:22
丁松
Rank: 2
来 自:重庆
等 级:论坛游民
威 望:1
帖 子:41
专家分:75
注 册:2015-11-11
收藏
得分:5 
#include <stdio.h>
#include <stdlib.h>
void sort(int array[],int n);
#define N 10
int main()
{
    int i,a[N]/*={0,1,2,3,5,4,7,6,9,8}*/;
    for(i=0;i<N;i++)
    {
       scanf("%d",&a[i]);
    }
    sort(a,10);
    return 0;
}
void sort(int array[],int n)
{
    int i,j,min1,min2,temp;
    for(i=0;i<n;i++)
    {
        min1=array[i];
        for(j=i;j<n;j++)
        {
            if(min1>array[j])
            {
                temp=min1;
                min1=array[j];
                array[j]=temp;
            }
        }
            //printf("%d",min1);
        temp=min1;
        min1=array[i];
        array[i]=temp;
        //printf("%d",array[i]);
    }
    for(i=0;i<n;i++)
        printf("%d ",array[i]);
    printf("\n");
}
2015-11-16 21:22
丁松
Rank: 2
来 自:重庆
等 级:论坛游民
威 望:1
帖 子:41
专家分:75
注 册:2015-11-11
收藏
得分:0 
回复 4楼 wmf2014
版主参加过ACM吗?前天被虐惨了
2015-11-16 21:29
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 5楼 丁松
你这还是冒泡,没参加过acm,哪里有?

[此贴子已经被作者于2015-11-16 21:35编辑过]


能编个毛线衣吗?
2015-11-16 21:32
丁松
Rank: 2
来 自:重庆
等 级:论坛游民
威 望:1
帖 子:41
专家分:75
注 册:2015-11-11
收藏
得分:5 
为何循环不从0开始,那样看着不会这么乱,N是开始就定义了的,调用sort时不需要参数传递N
2015-11-16 21:35
丁松
Rank: 2
来 自:重庆
等 级:论坛游民
威 望:1
帖 子:41
专家分:75
注 册:2015-11-11
收藏
得分:0 
回复 7楼 wmf2014
每个省份都有啊,先区域预赛,冠军参加全国比赛,全国冠军参加国际比赛
2015-11-16 21:37
涧边幽草
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-11-4
收藏
得分:0 
回复 7楼 wmf2014
请问,为什么说那一种还是冒泡?
2015-11-16 22:48
快速回复:输入10个数字,使用选择排序的方法,将输入数字从小到大输出,然而,我 ...
数据加载中...
 
   



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

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