sort排序在写代码的时候很方便,相对于快排来说;sort排序比冒泡要快;sort排序默认的排序的方式是从升序排序,要是需要进行倒序排序只需要加上一个函数即可,下面是模板:
sort升序模板
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[10]={56,23,59,89,45,49,64,563,98,41};
sort(a,a+10);
for(int i=0; i<10; i++)
cout << a[i] <<" ";
return 0;
}
sort降序模板
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int a[10]={56,23,59,89,45,49,64,563,98,41};
sort(a,a+10,cmp);
for(int i=0; i<10; i++)
cout << a[i] <<" ";
count << endl;
return 0;
}
结构体中单个数据排序调用的方法:
cmp函数模板
bool cmp(node a,node b)
{
return a.p > b.p ;
}
主函数里调用的形式和降序调用的一样
sort(s,s+n,cmp);
程序调用如下:
(背包问题)
#include <iostream>
#include <algorithm>
using namespace std;
const int Max=1000005;
struct node{
double p;//性价比
double v;//价值
double w;//重量
}s[Max];
bool cmp(node a,node b)
{
return a.p > b.p ;
}
int main()
{
int n,i,j,k;
double sum=0,m;
cin>>n>>m;
for(i=0; i<n; i++)
{
cin>>s[i].w >>s[i].v;
s[i].p =s[i].v /s[i].w ;
}
sort(s,s+n,cmp);
for(i=0; i<n; i++)
{
if(m>s[i].w)
{
m-=s[i].w ;
sum+=s[i].v ;
}
else
{
sum+=m*s[i].p ;
break;
}
}
cout<<sum<<endl;
return 0;
}