sort()函数的头文件#include<algorithm>
形式一:sort(begin, end);
形式二:sort(begin, end, comp);
补充:对于comp函数可以用greater<Type>和less<Type>代替,头文件是functional,greater<Type>对应的是 > 操作符,可以实现降序排列, less<Type>对应的是 < 操作符,可以实现升序排列。
begin, end 是左开右闭的区间,即[begin, end); 对于形式一,默认的排序方式的是升序,而形式而的排序方式则由comp函数来决定,测试代码如下:
#include <iostream> #include <algorithm> using namespace std; int comp(int a, int b) { //return a > b; //降序排列 return a < b; //升序排列 /* * 如果返回值为true, 则a排在b的前面, * 如果返回值为false,则a排在b的后面。 */ } int main() { int a[6] = {3,2,4,8,5,7}; //cout<<"This is sort(begin,end)"<<endl; //sort(a, a+6); //升序排列 cout<<"This is sort(begin, end, comp)"<<endl; sort(a, a+6, comp); for(int i =0; i<6; i++) cout<<a[i]<<" "; cout<<endl; }
对于qsort函数,他是C语言里的函数,其函数原型为
void qsort(void *base, size_t nmemb, size_t size, int (*comp)(const void *, const void *));
第一个参数为指向要排序的数组头部的指针,实参可以指向任何类型的数组。第二个参数是要排序的项目数量,即数组的前n个元素个数。第三个参数是数组中元素的大小,即类型大小,如sizeof(int),第四个参数是指向要确定排序顺序的函数的函数指针。测试代码如下:
#include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; int comp(const void *p1, const void *p2) { const int *a = (const int *)p1; const int *b = (const int *)p2; //return *a > *b; //升序排列 return *a < *b; //降序排列 } int main() { int a[6] = {3, 5, 2, 8, 6, 7}; qsort(a, 4, sizeof(int), comp); for(int i =0; i<6; i++) cout<<a[i]<<" "; cout<<endl; }