标题:求教输入5个数,从小到大排序 的C语言程序?
只看楼主
loner1228
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-30
结帖率:0
已结贴  问题点数:20 回复次数:13 
求教输入5个数,从小到大排序 的C语言程序?
求教输入5个数,从小到大排序 的C语言程序?
搜索更多相关主题的帖子: 输入 C语言 从小到大 
2009-12-24 14:43
human84
Rank: 3Rank: 3
来 自:哈尔滨 / 重庆
等 级:论坛游侠
帖 子:154
专家分:141
注 册:2009-11-1
得分:2 
冒泡排序就好了:
void sort(int b[],int n);
void printart(int b[]);
main()
{
int a[5],i;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("befor sort:\n");
printart(a);
sort(a,5);
printf("After sort:\n");
printart(a);
getch();
}
void printart(int b[5])
{
int i;
for(i=0;i<5;i++)
printf("%5d",b[i]);
printf("\n");
}
void sort(int b[],int n)
{
int i,j,t;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
if(b[j]>b[j+1])
{
t=b[j];b[j]=b[j+1];b[j+1]=t;
}
}
}
2009-12-24 14:45
loner1228
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-30
得分:0 
除了冒泡排序法,还有更简便的方法吗,麻烦了
2009-12-24 14:50
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
得分:2 
排序的方法多了去了,有冒泡排序,直接排序,插入排序……
关键是你要掌握啊。像你这样什么都没有张口就要程序,还想要更简单的,无语……
2009-12-24 15:06
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:2 
stl 的sort
2009-12-24 15:44
crystal111
Rank: 2
等 级:论坛游民
帖 子:25
专家分:21
注 册:2009-11-15
得分:2 
选择法
2009-12-24 16:08
阮飞
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2009-10-26
得分:2 
main()
{

     int i,j,t,a[5];
     printf("\ninput 5 numbers:");
     for(i=0;i<5;i++)
     scanf("%d",&a[i]);
     for(i=0;i<4;i++)
     for(j=i+1;j<5;j++)
     if(a[i]>a[j])
     {
       t=a[i];
       a[i]=a[j];
       a[j]=t;
     }
     for(i=0;i<5;i++)
     printf("%d\t",a[i]);

}
2009-12-24 17:43
xixistudio
Rank: 2
等 级:论坛游民
帖 子:24
专家分:53
注 册:2009-12-23
得分:2 
so many
插入,选择,快速,堆,归并。。。
2009-12-24 18:31
zhych22
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2008-6-23
得分:2 
7楼的打擂台的方法是可以,不过有点问题,就是每次比较的时候,发现比自己小的就交换,这样效率有点低,最好是记住数组的下标,比较完了再跟最小的交换。以下是我写的代码。
#include <stdio.h>
#include <stdlib.h>
void main()
{
    int i, j, number[5], nTmp, sum;
    printf("请输入5个整数:");
    for(i = 0; i < 5; i++)
    {
        scanf("%d",&number[i]);
    }
    printf("您输入的数是:");
    for(i = 0; i < 5; i++)
    {
        printf("%d\t",number[i]);
    }
    for(i = 0; i < 5; i++)
    {
        nTmp = i;
        for(j = i; j < 5; j++)
        {
            if(number[nTmp] > number[j])
            {
                nTmp = j;
            }
        }
        if(nTmp != i)
        {
            sum = number[i];
            number[i] = number[nTmp];
            number[nTmp] = sum;
        }
    }
    printf("\r\n按照从小到大的方式排列为:");
    for(i = 0; i < 5; i++)
    {
        printf("%d\t",number[i]);
    }
    printf("\r\n");
    system("pause");
}
2009-12-24 19:51
阮飞
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2009-10-26
得分:0 
9楼,我觉得程序各有各的好处吧,这么小的一个程序几微妙就能完成不必考虑程序的效率,此时最重要的是程序简单易懂,你说对不?
2009-12-25 10:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-294230-1-1.html




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

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