zoukankan      html  css  js  c++  java
  • 蓝桥杯练习系统—算法训练 P1102

    第一部分:题目

    定义一个学生结构体类型student,包括4个字段,姓名、性别、年龄和成绩。然后在主函数中定义一个结构体数组(长度不超过1000),并输入每个元素的值,程序使用冒泡排序法将学生按照成绩从小到大的顺序排序,然后输出排序的结果。
      输入格式:第一行是一个整数N(N<1000),表示元素个数;接下来N行每行描述一个元素,姓名、性别都是长度不超过20的字符串,年龄和成绩都是整型。
      输出格式:按成绩从小到大输出所有元素,若多个学生成绩相同则成绩相同的同学之间保留原来的输入顺序。
    输入:
      3
      Alice female 18 98
      Bob male 19 90
      Miller male 17 92

    输出:
      Bob male 19 90
      Miller male 17 92
      Alice female 18 98

    第二部分:思路

    如题所说冒泡排序,但是因为“若多个学生成绩相同则成绩相同的同学之间保留原来的输入顺序”,所以只能对相邻的两个进行排序。当进行了排序时,那么前面的可能也需要重新排序,所以再从头开始。记录这题的原因:发现了可以在不改变相同大小数据的原始顺序的情况下进行排序。

    第三部分:代码

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    //结构体 
    struct student
    {
        string name;
        string sex;
        int age;
        int score;
    };
    int main()
    {
        int n;
        cin>>n;
        student stu[1000];
        for(int i=0;i<n;i++)
        {
            cin>>stu[i].name>>stu[i].sex>>stu[i].age>>stu[i].score;
        }
        for(int i=0;i<n-1;i++)
        {
            int j=i+1;
            if(stu[i].score>stu[j].score)
            {
                string str;
                str=stu[i].name;
                stu[i].name=stu[j].name;
                stu[j].name=str;
                
                str=stu[i].sex;
                stu[i].sex=stu[j].sex;
                stu[j].sex=str;
                
                int t;
                t=stu[i].score;
                stu[i].score=stu[j].score;
                stu[j].score=t;
                
                t=stu[i].age;
                stu[i].age=stu[j].age;
                stu[j].age=t;
                i=-1;//如果进行了排序那么前面的可能还需排序。 
            }
        }
        for(int i=0;i<n;i++)
        {
            cout<<stu[i].name<<' '<<stu[i].sex<<' '<<stu[i].age
            <<' '<<stu[i].score<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/xiangguoguo/p/5510242.html
Copyright © 2011-2022 走看看