C++使用sort排序
对于一个数组,通过对数组中的元素进行交换,我们可以将数组中的元素从小到大或从大到小进行顺序排列。当我们希望对数组中的元素进行排序时,我们可以使用C++为我们提供的工具-——sort。有了它,你再也不用纠结如何完成排序了。
sort是一个C++已经为我们实现好的工具,使用时,需要先引入一个算法的库——<algorithm>。需要说明的是,sort可以排序任何类型的元素,包括我们自己定义的结构体。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int arr[]={2,4,5,3,5};
return 0;
}
通过写:
sort(arr,arr+5);
我们可以将arr数组前五个元素进行由大到小的排序。
而如果写:
sort(arr+i,arr+j);
那么被排序的将会是arr[i]到arr[j]的元素,其他元素将保持原来位置。
如果希望是由大到小排,可以传入第三个参数——“排序方法”:
sort(arr,arr+5,greater<int>());
其中greater是更大的意思,<int>表示待排序的数组元素类型。
完整代码为:
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int arr[]={2,4,5,3,5};
sort(arr,arr+5);
for(int i=0;i<5;i++){
cout<<arr[i];
}
cout<<endl;
sort(arr,arr+5,greater<int>());
for(int i=0;i<5;i++){
cout<<arr[i];
}
cout<<endl;
return 0;
}
例题1:
老师希望知道办理的学生水平,将同学成绩分为三个等级A(80-100),B(60-80),C(0-60),输入十个学生的成绩,并由大到小进行排序,在计算出前个同学的总成绩,最后统计三个等级的学生人数。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int arr[10];
int sum=0;
int A=0,B=0,C=0;
for(int i=0;i<10;i++){
cin>>arr[i];
}
sort(arr,arr+10,greater<int>());
for(int i=0;i<10;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
int stunum;
cin>>stunum;
for(int i=0;i<stunum;i++){
sum+=arr[i];
}
cout<<sum<<endl;
for(int i=0;i<10;i++){
if(arr[i]<100&&arr[i]>=80){
A++;
}else if(arr[i]<80&&arr[i]>=60){
B++;
}
else{
C++;
}
}
cout<<A<<" "<<B<<" "<<C<<endl;
return 0;
}
例题2:
我们有N个整数,现需要将这些整数按照对除以3的余数进行从小到大的排序,如果余数的值相同,则按照数字大小进行排列,最后将排列好的整数进行输出。
//使用自己写的结构体进行排序
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int x,int y){
if(x%3!=y%3){
return x%3<y%3;
}else{
return x<y;
}
}
int main(){
int N;
int num[105];
cin>>N;
for(int i=0;i<N;i++){
cin>>num[i];
}
sort(num,num+N,cmp);
for(int i=0;i<N;i++){
cout<<num[i];
}
cout<<endl;
return 0;
}