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;
}