利用C++标准库函数对数组开展排序

利用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*。