例如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是結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)類型為edge
2 回答

慕尼黑的夜晚無(wú)繁華
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
cmp 就是比較函數(shù),用于確定兩個(gè)對(duì)象的大小關(guān)系
這是需要你自己定義的

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