21xrx.com
2024-12-22 21:37:44 Sunday
登录
文章检索 我的文章 写文章
C++成绩排序实现
2023-07-11 01:12:13 深夜i     --     --
C++ 成绩 排序 实现 算法

在C++编程中,经常需要对一组数据进行排序。而在实际情况中,有时我们要对学生的成绩进行排序。这时候就需要用到C++成绩排序的相关知识。

实现C++成绩排序的方法有很多种,下面介绍一种常用且简单的方法。首先我们需要定义一个结构体,用来存储学生的姓名和成绩。


struct Student{

  char name[20];

  int score;

}stu[100];

然后我们需要输入学生的姓名和成绩,以及学生的个数n。这里我们使用循环语句来实现输入。


int n;

cin>>n;

for(int i=0;i<n;i++){

  cin>>stu[i].name>>stu[i].score;

}

接下来,我们需要对学生的成绩进行排序。我们可以使用冒泡排序,快速排序或堆排序等算法。这里我们使用快速排序。首先需要定义一个快速排序的函数。


void quickSort(int left,int right){

  if(left>=right) return;

  Student key=stu[left];

  int i=left,j=right;

  while(i<j){

    while(i<j&&stu[j].score<=key.score) j--;

    stu[i]=stu[j];

    while(i<j&&stu[i].score>=key.score) i++;

    stu[j]=stu[i];

  }

  stu[i]=key;

  quickSort(left,i-1);

  quickSort(i+1,right);

}

快速排序的实现很简单,就是先找到一个枢轴元素(一般是数组的第一个元素),然后把未排序的元素分成两部分,左侧的元素都比枢轴元素小,右侧的元素都比枢轴元素大。最后递归执行对左侧和右侧的排序。

最后打印排序后的结果,输出学生姓名和成绩即可。


for(int i=0;i<n;i++){

  cout<<stu[i].name<<" "<<stu[i].score<<endl;

}

至此,C++成绩排序实现就完成了。这种方法简单易懂,代码实现也不难,而且效率也很高,适用于大多数情况。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复