排序是程序设计应用最广泛的算法之一,所以学好排序的重要性,你懂的!

关于排序自己会用的不多,先在这里做个小结!

首先,sort函数可以对数组和结构体进行排序,还是用实例说话吧!一句话,都在代码里!

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
bool cmp(int i,int j)
{
	return (i>j);
}
int main()
{
	int num[]={5,2,9,7,1,6,4,8,3};
	vector<int>data(num,num+9);
	vector<int>::iterator it;
	int i;
	cout<<"原始数据:"<<endl;
	for(i=0;i<9;i++)
	{
		cout<<num[i]<<" ";
	}
	cout<<endl;
	cout<<"对前四个数排序:"<<endl;
	sort(num,num+4);// 2 5 7 9 1 6 4 8 3
    for(i=0;i<9;i++)
	{
		cout<<num[i]<<" ";
	}
	cout<<endl;
	cout<<"按从大到小排列输出:"<<endl;
	sort(data.begin(),data.end(),cmp);
	for(it=data.begin();it!=data.end();it++)
	{
		cout<<*it<<" ";
	}
	cout<<endl;
	return 0;

}

有时,我们进行的排序所依据的因素有多个,比如我们在对acm竞赛人员的成绩进行排名时,往往先依据他们的解答出来的题目数,如果题目数相同了,我们就会依据他们所用的时间来进行排名,这时往往会涉及结构体的二级排序,下面介绍结构体的一级和二级排序!

#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
	int num;
	int age;
}example[5];
bool cmp(node a,node b)
{
	return a.num>b.num;
}
bool cmp2(node a,node b)
{
	if(a.num!=b.num)
		return a.num>b.num;
	else
		return a.age<b.age;
}
int main()
{
	int i;
	for(i=0;i<5;i++)
	{
		cin>>example[i].num>>example[i].age;
	}
	sort(example,example+5,cmp);
	cout<<"---after sorting by cmp---"<<endl;
	for(i=0;i<5;i++)
	{
		cout<<example[i].num<<" "<<example[i].age<<endl;
	}
	sort(example,example+5,cmp2);
	cout<<"---after sorting by cmp2---"<<endl;
    for(i=0;i<5;i++)
	{
		cout<<example[i].num<<" "<<example[i].age<<endl;
	}
	return 0;
}
	



 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐