首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-09-14 
利用C++标准库函数对数组进行排序对数组进行排序,我们可以自己写排序函数,然而C标准库中有现成的函数对数

利用C++标准库函数对数组进行排序

对数组进行排序,我们可以自己写排序函数,然而C++标准库中有现成的函数对数组进行排序:

例子:

#include "stdafx.h"

#include <iostream>

#include <cstdlib> //如果是C语言的话改为#include <stdlib.h>

using namespace std;

 

intcmpTest(constvoid*pFirst,constvoid*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*。

热点排行