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

浙公网安备 33010602011771号