例如int cmp(const void *a,const void *b){return *(int *)b-*(int *)a;}qsort(a,n,sizeof(a[0]),cmp);另外解釋一下例子中的CMP例子2:int cmp(edge a,edge b){return a.w<b.w;} sort(e,e+m,cmp); //其中e是結構體數(shù)組,結構類型為edge
2 回答

海綿寶寶撒
TA貢獻1809條經(jīng)驗 獲得超8個贊
聲明成一個返回值是 int ,參數(shù)是兩個 void* 類型的函數(shù)就可以了,這個函數(shù)會被算法實現(xiàn)的代碼調用的 具體實現(xiàn): int my_cmp(void* p1,void* p2) { // p1 代表第一個對象的地址指針 // p2 代表第二個對象的地址指針 // p1 和 p2 的具體類型就是你數(shù)組定義時的類型,可以是簡單的類型,也可以是結構、C++對象等 // 在這個函數(shù)中你要將這些 p1 p2 轉化成實際的數(shù)據(jù)類型,然后進行比較 // 如果第一個對象等于第二個對象,則返回0 // 如果第一個對象大于第二個對象,則返回正數(shù) // 如果第一個對象小于第二個對象,則返回負數(shù) }
添加回答
舉報
0/150
提交
取消