一、sort函数
1、头文件包含<algorithm>;
2、sort(begin,end);
3、自定义排序规则:
例编写函数
bool compare(int a, int b)
{
return a<b; //则从小到大排序
};
二、qsort函数
1、头文件包含stdlib.h;
2、void qsort(void *base, int nelem, unsigned int width, int(* pfCompare) (const void*, const void*));
数组地址 数组元素个数 元素大小 比较规则, 自定义函数
3、自定义函数mycompare
int mycompare(const void* a1, const void* a2)
{
int *p1 = (int *)a1; //a1是void类型不能直接使用,使用强制类型转换。
int *p2 = (int *)a2;
return (*p1 % 10) - (*p2 % 10);
}
#include <algorithm> #include <iostream> using namespace std; #define Num 10 int a[Num] = { 10,562,12,365,21,22,36,7,5,32 }; bool compare(int a, int b) { return (a%10)<(b%10); } int mycompare(const void* a1, const void* a2) { int *p1 = (int *)a1; int *p2 = (int *)a2; return (*p1 % 10) - (*p2 % 10); } int main() { int i; cout << "使用sort按个位数从小到大排序" << endl; cout << "输出原数组:"; for(i=0;i<Num;i++) cout << a[i]<<" " ; sort(a, a + 10,compare); cout << endl; cout << "输出排序后数组:"; for (i = 0; i < Num; i++) cout << a[i] << " " ; cout << endl << "==========================================" << endl; int l; cout << "使用qsort按个位数从小到大排序" << endl; cout << "输出原数组:"; for (l = 0; l<Num; l++) cout << a[l] << " "; qsort(a, Num, sizeof(int), mycompare); cout << endl; cout << "输出排序后数组:"; for (l = 0; l<Num; l++) cout << a[l] << " "; system("pause"); return 0; }