如何利用C函數庫中的 qsort 來排序
下載範例<qsort.cpp> #include <stdio.h> #include <stdlib.h> #include<time.h>
int compare(const
void *a, const void *b)//這函式是 qsort 所需的比較函式 /* 字串部分比較 可以利用下列部分 int compare( const void *a, const void *b) { return( strcmp((char *)a,(char *)b) ); } */
void main() { int a[100],i; srand((unsigned) time(NULL)); for(i=0;i<100;i++) for(unsigned i = 0; i < 100;
i++) printf("\n"); /*qsort 函數說明 ->>需要 #include<stdlib.h> void qsort(void* base, size_t n, size_t size, int (*cmp)(const void*, const void*)):陣列基礎的快速排序法函數,陣列是參數 base,n 是陣列大小,size 是每個元素的大小,最後的參數是指向函數的指標,這是比較元素大小的函數( 即上面 compare() 函數)。 */ qsort((void *)a, 100, sizeof(a[0]), compare); for(unsigned i = 0; i < 100; i++) { printf(" %d\t", a[i]); //印出排序後的內容 } system("PAUSE"); } |
以下來自Delphi
K Top討論區
brant所發表
給你一個 sample
code ,比 float 用 strcmp 去比也許會容易讓人搞不清楚: #include <iostream> using namespace std; int compare( const void *arg1, const void *arg2 ) { long double ret = *(long double*)(arg1)-*(long double*)(arg2); if (ret>0) return 1; if (ret<0) return -1; return 0; } void main() { long double test[5]; int i; test[0] = 0.257932167931; test[1] = 0.597136798769; test[2] = 0.166879313246; test[3] = 1.267498764654; test[4] = 0.649843143498; qsort(test,5,sizeof(long double),compare); for (i=0;i<5;i++) { cout << test[i] <<endl; } } //以下改成DEV C++可執行 by hlf
#include <iostream.h>
int compare( const void *arg1, const void *arg2 )
long double ret = *(long double*)(arg1)-*(long double*)(arg2);
void main()
|
其他可以參閱The Counting Sort Algorithm