2018_蓝桥_sort()函数_排序函数总结

.

基本用法:

排序函数:sort()

    #include<algorithm>

        int a[10];

        sort(a,a+10);//默认的是从小到大排序

    如果要从大到小,写一个cmp函数

            #include<algorithm>

            bool cmp(const &  int a,const &int b){

                return a<b?1 :0;//从小到大是a<b,从大到小是a>b

            }

            sort(a,b,cmp);

   #include<algorithm>
   #include<iostream>
   using namespace std;
   void Show(int*a,int n){
   	for(int i=0;i<n;i++){
   		cout<<a[i]<<" "; 
   	}
   	cout<<endl;
   }
    bool cmp(const int& a, const int & b){//这里的代码之前写错了!汗 
                //return a<b?1 :0;//从小到大是a<b,从大到小是a>b
           		return a>b;
		    }

   int main(){
   	int a[10]={1,2,5,3,1,2,3,4,7,6};

    sort(a,a+10);//默认的是从小到大排序
    Show(a,10);

    //如果要从大到小,写一个cmp函数

           
            sort(a,a+10,cmp);
            Show(a,10);
   	
   }

    

.        

.

利用排序函数对结构体进行相应的排序(蓝桥杯_算法提高_盾神与积木游戏):

    

  算法提高 盾神与积木游戏  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  最近的m天盾神都去幼儿园陪小朋友们玩去了~
  每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西。但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小朋友的积木才能完成他的大作。如果某个小朋友完成了他的作品,那么他就会把自己的作品推倒,而无私地把他的所有积木都奉献出来;但是,如果他还没有完成自己的作品,他是不会把积木让出去的哟~
  盾神看到这么和谐的小朋友们感到非常开心,于是想帮助他们所有人都完成他们各自的作品。盾神现在在想,这个理想有没有可能实现呢?于是把这个问题交给了他最信赖的你。
输入格式
  第一行为一个数m。
  接下来有m组数据。每一组的第一行为n,表示这天有n个小朋友。接下来的n行每行两个数,分别表示他现在拥有的积木数和他一共需要的积木数。
输出格式
  输出m行,如果第i天能顺利完成所有作品,输出YES,否则输出NO。
样例输入
2
2
2 2
1 3
3
1 5
3 3
0 4
样例输出
YES
NO
数据规模和约定
  1<=n<=10000,1<=m<=10。

#include<iostream>
#include<algorithm>
#include<stack>
#include<iomanip>
#include<queue>
#include<cmath>
using namespace std;
int Sum = 0;//保留可用的积木
struct C {
	int data1;
	int data2;
	int differ;//difference相差
};
bool  cmp(const C &x, const C &y)
{
	return x.differ<y.differ;//从小到大排<,若要从大到小排则>  
}
int main() {
	int n;//几组
	int num;//一组中有几对数据
	cin >> n;
	C * Array = new C[20000];//
	for (int i = 0; i < n; i++) {
		cin >> num;
		for (int i = 0; i < num; i++) {
			cin >> Array[i].data1 >> Array[i].data2;
			Array[i].differ = Array[i].data2 - Array[i].data1;
		}
		sort(Array, Array + num, cmp);//
		for (int i = 0; i < num; i++) {
			//可以拼好的情况
			if (Array[i].differ == 0) {
				Sum += Array[i].data1;
				continue;
			}
			//还需要部件的情况
			Sum -= Array[i].differ;
			if (Sum >= 0) {//需要部件的同学拼好了
				Sum += Array[i].data2;
			}
			else {
				cout << "NO" << endl;
				break;//输出NO后需要跳出循环
			}
		}
		if (Sum >= 0) {
			cout << "YES" << endl;
		}
		Sum = 0;//归零!!
	}
	return 0;
}

结构体和类一样也是一种数据类型,因此cmp函数可以这样写:

bool cmp(const 结构体 & a,const 结构体 &b){

        return a.differ<b.differ;

}

.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

八块腹肌的小胖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值