| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 610 人关注过本帖
标题:关于排序的问题
只看楼主 加入收藏
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:12 
关于排序的问题
有什么简单的方法可以将一组数从大到小排列?
2011-06-04 21:52
la779553468
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2011-5-21
收藏
得分:3 
冒泡和选择啊
2011-06-04 22:02
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:3 
程序代码:
void swap(int * p1, int * p2) {
    *p1 ^= *p2;
    *p2 ^= *p1;
    *p1 ^= *p2;
}

void sort_desc(int * ar, int size) {
    int i, j, k;
    for(i = 0; i < size- 1; i++) {
        k = i;
        for(j = i + 1; j < size; j++) {
            if(ar[j] > ar[k]) {
                k = j;
            }
        }
        if(k != i) {
            swap(ar+ i, ar+ k);
        }
    }
}

My life is brilliant
2011-06-04 22:04
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
收藏
得分:0 
这个是可以,用到结构上好像有问题
2011-06-04 22:04
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 4楼 周1992
什么结构?

My life is brilliant
2011-06-04 22:06
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
收藏
得分:0 
46 学生成绩排序

成绩: 10 / 折扣: 0.8
    大家参加了期末考试,成绩出来后老师要对 n 个学生进行成绩汇总和排序。要求程序按成绩降序进行排序。在排序过程中对于成绩相同的学生,要按照输入数据的顺序进行排列。例如:有5名学生的成绩:
zhang1,90
zhang2,91
zhang3,99
zhang4,91
zhang5,98

则排序结果应该为:
zhang3,99
zhang5,98
zhang2,91
zhang4,91
zhang1,90

请注意例题中“zhang2”和“zhang4”的排列顺序。

输入:
    第一行为将要输入的学生数量n
    从第二行起后面连续 n 行数据,每行为一名学生的姓名(长度不超过20个字符,不包括空格),考试成绩(int)

输出:
    排序后的结果。每行为一名学生的姓名和成绩。

     这是题目。用结构做,struct
2011-06-04 22:30
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
你改改不就行了,

My life is brilliant
2011-06-04 22:30
fei741878347
Rank: 2
等 级:论坛游民
帖 子:35
专家分:45
注 册:2011-3-20
收藏
得分:3 
我感觉这个好像更简单点(冒泡法)
#define n 10
main()
{
int a[n],i,j,t;
for(i=0;i<n;i++)  scanf("%d,&a[i]");
for(j=1;j<n;j++)
    for(i=0;i<=n-1-j;i++)
    if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;i<n;i++)  printf("%d\n",a[i]);
}
2011-06-04 22:46
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:3 
有时间没使用结构体啦。将就着看吧。
程序代码:
root@~ #cat jp.c
#include <stdio.h>
#include <string.h>
//定义结构体
struct stu {
        char name[10];
        int score;
};

int main (void) {
        struct stu boy[100];//声明一个100个学生的结构变量
        int n,i,j,temp;     //程序所需变量
        char tmp[10];
//提示输入学生人数
        printf("Enter numbers of students:");
        scanf("%i",&n);
//开始输入学生名和成绩
        for(i=0;i<n;i++) {
                scanf("%s%i",boy[i].name,&boy[i].score);
        }
//开始对成绩降序排序
        for(i=0;i<n-1;i++) {
                for(j=i+1;j<n;j++) {
                        if(boy[i].score<boy[j].score) {
                                temp=boy[i].score;
                                boy[i].score=boy[j].score;
                                boy[j].score=temp;
                                strcpy(tmp,boy[i].name);
                                strcpy(boy[i].name,boy[j].name);
                                strcpy(boy[j].name,tmp);
                        }
                }
        }
        printf("After Sort ...\n\n");
//打印结果
        for(i=0;i<n;i++) printf("%s %i\n",boy[i].name,boy[i].score);

        return 0;

}

root@~ #

测试:
程序代码:
root@~ #./jp
Enter numbers of students:5
zhang1 90
zhang2 91
zhang3 99
zhang4 91
zhang5 98
After Sort ...

zhang3 99
zhang5 98
zhang4 91
zhang2 91
zhang1 90
root@~ #

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-04 23:19
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:3 
C中库函数:qsort就OK。。。原理是快速排序
2011-06-05 01:51
快速回复:关于排序的问题
数据加载中...
 
   



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

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