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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章