sort和qsort库的使用

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

}

  

猜你喜欢

转载自www.cnblogs.com/Eumenides/p/9101270.html