利用C++标准库函数对数组开展排序
对数组进行排序,我们可以自己写排序函数,然而C++标准库中有现成的函数对数组进行排序:
例子:
#include "stdafx.h"
#include <iostream>
#include <cstdlib> //如果是C语言的话改为#include <stdlib.h>
using namespace std;
intcmpTest(const void*pFirst,const void*pSecond)
{
int nA = *((int*)pFirst);
int nB = *((int*)pSecond);
//return (nA<nB ? -1 : nA>nB ? 1 : 0); //由小到大排序
return (nA<nB ? 1 : nA>nB ? -1 : 0); //由大到小排序
}
int_tmain(int argc, _TCHAR* argv[])
{
int nArray[] = {9, 10, 3, 1, 33, 9, 22, 10, 4, 30};
cout<<"排序前的结果:"<<endl;
for(int i=0; i<10;++i)
{
cout<<nArray[i]<<endl;
}
qsort(nArray,10,sizeof(int),cmpTest);
//排序后的结果
cout<<"排序后的结果:"<<endl;
for(int i=0; i<10;++i)
{
cout<<nArray[i]<<endl;
}
return 0;
}
此处利用的是qsort库函数,其函数原型为:
void qsort (void*base,size_t num, size_t width, int (__cdecl *compare)(const void* elem1, constvoid* elem2));
说明:第一个参数base是数组指针,第二个参数num是数组中元素的个数,第三个参数指的是数组中元素的大小,即占内存的大小;第四个参数指的是比较函数。自己定义的比较函数要符合该函数原型的定义,如返回值为int,参数1和参数2的类型为const void*。