對數組進行排序,我們可以自己寫排序函數,然而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*。