#include <iostream>
#include <algorithm>
#include <time.h>
using namespace std;
typedef struct index
{
int a;
int b;
}index;
bool cmp(index a , index b)
{
if (a.a > b.a )
{
return true;
}
else
if ( a.a == b.a )
{
if (a.b > b.b )
{
return true ;
}
}
return false ;
}
int main()
{
index c[100];
srand( time(0) );
int i;
for (i = 0 ; i < 100 ; ++i )
{
c[i].a = rand()%10 ;
c[i].b = rand()%10 ;
}
sort( c , c+100 , cmp );
for (i = 0 ; i < 100 ; ++i )
{
cout<<c[i].a <<" "<<c[i].b <<endl;
}
return 0;
}
sort函数介
1.包含在头文件algorithm中,使用的话记得打上 #include <algorithm>
2.函数原型:template <class RandomAccessIterator, class StrictWeakOrdering>
void sort(RandomAccessIterator first, RandomAccessIterator last, StrictWeakOrdering comp);
前两个参数指定了排序的序列,对first到last(不包括last)的元素进行排序,第三个参数指定了如何
判断一个元素是否在另一个元素之前如果不写第三个参数,默认为从小到大排序。(有个小技巧,如
果懒得重写cmp函数,也可以通过逆序输出实现从大到小排序)
3.sort与qsort的区别:
sort是一个改进版的qsort,sort函数优于qsort的一些特点:
1.对大数组采取9项取样,更完全的三路划分算法,更细致的对不同数组大小采用不同方法排序。
2.Sort中的cmp函数参数可以直接是参与比较的引用类型。
3.cmp函数比较时qsort用“-”,而sort用”>”.这也是一个重要的区别。
4.sort函数是c++中标准模板库的的函数,在qsort()上已经进行了优化,根据情况的不同可以采用不同
的算法,所以较快。在同样的元素较多和同样的比较条件下 ,sort()的执行速度都比qsort()要快。
5.sort()是类属函数,可以用于比较任何容器,任何元素,任何条件。