查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

输入描述:

输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开。
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1:
输入

3
0
fang 90
yang 50
ning 70

输出

fang 90
ning 70
yang 50

考察内容:结构体排序

#include <bits/stdc++.h>
using namespace std;
#define MAXSIZE 100000
struct Student
{
    string name;
    double score;
    int index;
};

int cmp2(Student a, Student b)
{//成绩从大到小排序
    if(a.score == b.score)
        return a.index < b.index;
    return a.score < b.score;
}

int cmp1(Student a, Student b)
{//成绩从小到大排序
    if(a.score == b.score)
        return a.index < b.index;
    return a.score > b.score;
}
int main()
{
    int n, m;
    while(scanf("%d %d", &n, &m)!=EOF)
    {
        Student *s = new Student[MAXSIZE];
        for(int i = 0; i < n; i++)
        {
            cin>>s[i].name>>s[i].score;
            s[i].index = i;//录入顺序
        }
        if(m == 0)
            sort(s, s+n, cmp1);
        else
            sort(s, s+n, cmp2);
        for(int i = 0; i < n; i++)
            cout<<s[i].name<<" "<<s[i].score<<endl;
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个任务可以使用很多不同的编程语言来完成,以下是一个Python的示例代码: ```python # 定义一个包含成绩的列表 grades = [85, 92, 78, 90, 88] # 使用内置函数sorted()进行排序,并将reverse参数设置为True以实现从高到排序 sorted_grades = sorted(grades, reverse=True) # 输出排序后的结果 print(sorted_grades) ``` 运行这段代码将输出以下结果: ``` [92, 90, 88, 85, 78] ``` 这是一个按照从高到排序成绩列表。 ### 回答2: 要将计算机成绩按照从高到的顺序进行排序,可以采用以下步骤: 首,我们需要获取学生的计算机成绩列表。 然后,可以使用一个排序算法,例如快速排序或归并排序,对成绩列表进行排序。这些排序算法都能够按照我们需要的顺序将成绩进行排列。 在排序算法中,我们需要根据成绩的大小进行比较,并根据比较结果进行交换或移动元素的位置。通过多次比较和排序操作,最终可以将成绩按照从高到的顺序排列。 在排序完成后,我们可以输出或显示排序后的成绩列表,这样就可以看到按照从高到的顺序排列的计算机成绩了。 如果需要保存排序后的成绩列表,可以将它们存储在一个数组或列表中,以便后续使用。 值得注意的是,我们也可以使用已有的排序工具或库来实现此任务,以简化编写排序算法的过程。这些排序工具通常提供了各种排序算法的实现,我们只需根据需求选择合适的方法即可。 通过以上步骤,我们可以有效地将计算机成绩按照从高到的顺序进行排序,以方便后续分析和使用。 ### 回答3: 要将计算机成绩按从高到进行排序,可以使用一种排序算法,如冒泡排序快速排序或归并排序等。 冒泡排序是一种简单的比较排序方法。首,将所有成绩按照从小到大的顺序依次比较相邻的两个成绩,如果一个成绩较大,则交换位置。这样一轮比较下来,最大的成绩会被放到最后一个位置。接着,再次进行同样的比较,但此时只需要比较面n-1项,即除了最后一项外的其他成绩。如此反复进行多轮比较,直到所有成绩按照从高到的顺序排序完毕。 快速排序是一种更效的排序算法。首,从成绩序列中选择一个基准值,将序列中的成绩分成两个子序列,一个子序列中的成绩都小于基准值,另一个子序列中的成绩都大于基准值。然后,对这两个子序列递归地进行同样的操作,直到每个子序列中只有一个成绩。最后,将所有子序列按照顺序合并起来,即得到按从高到排序成绩序列。 归并排序是一种稳定的排序算法。首,将成绩序列逐层拆分成较小的子序列,直到每个子序列只有一个成绩。然后,逐层合并这些子序列,将较小的子序列合并为较大的子序列,直到最后只剩下一个完整的有序序列,即按从高到排序成绩序列。 以上是三种常用的排序算法,可以将计算机成绩按从高到的顺序进行排序。具体选择哪种算法可以根据问题的规模,算法的特点和效率等因素进行综合考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值