例如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是結構體數組,結構類型為edge
2 回答

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