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;
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怼您恏1031

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值