说到c/c++排序,大家肯定想到用algorithm里的排序,或者c里的qsort.但真正理解的又有多少,故现在整理一下.
一.数组排序.
sort()函数默认从小到大的排序,如要从大到小的排序,一般人都会去写一个cmp函数,两三行代码解决?但是?能不能有更简单的方法呢?或者更加简短的代码?答案是肯定的.
下面的代码将详细阐述数组排序问题.
#include<iostream>
#include<algorithm>
#include <ctime>
using namespace std;
int a[10];
void P()
{
static int t=0;
if(t%2==0)
cout<<"\n原数组:";
else
cout<<"拍序后:";
t++;
for(int i=0; i<10; i++)
cout<<a[i]<<" ";
cout<<endl;
}
void init()
{
for(int i=0; i<10; i++)
a[i]=rand()%100+1;
}
bool cmp1(int x,int y)
{
return x<y;//小的优先(从小到大)
}
bool cmp2(int x,int y)
{
return x>y;
}
int main()
{
srand(time(NULL));
init();
P();
sort(a,a+10);//默认从小到大
P();
init();
P();
sort(a,a+10,cmp1);//从小到大
P();
init();
P();
sort(a,a+10,cmp2);//从大到小
P();
init();
//下面的方式更加简单,不用写cmp函数.
sort(a,a+10,less<int>());//从小到大
P();
init();
sort(a,a&#