è¯æ³ä¸ä¸ï¼å¦æè®©ä½ èªå·±è®¾è®¡qsortå½æ°ï¼éè¦äºä»ä¹ä¸è¥¿ï¼é¦å°åè¦æå§ï¼æ»å
±æå 个å
ç´ è¦æå§ï¼æ¯ä¸ªå
ç´ å å¤å¤§çå
åè¦æå§ï¼æ³æ³å°±ç¥éå½æ°å
é¨è¦æ ¹æ®å
ååç大å°äº¤æ¢æ°æ®å®ç°æåºï¼ï¼æåä¸ä¸ªè§åæ»è¦æå§ï¼qsortççµæ´»æ§å¨äºè§åæ¯æ´»çä¸æ¯æ»çï¼å
¶å®å¤§å¤æ°è¯è¨çæåºé½æ¯ç±»ä¼¼çæºå¶å¦ãããçä¸qsortçåå
void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
baseå°±æ¯æè°çé¦å°åï¼nelemå°±æ¯å
ç´ ä¸ªæ°ï¼widthï¼å°±æ¯æ¯ä¸ªå
ç´ ç大å°ï¼fcmpæ¯ä¸ä¸ªå½æ°æéï¼è¿éå½æ°çå®ä¹è¦ç±»ä¼¼äºint cmp(const void*a,const void*b),å
¶å®å¾å¤äººä¸ç¥éæä¹ä½¿ç¨qsort主è¦æ¯å¨äºå¯¹è¿ä¸ªå½æ°ä¸æå¾å¦ä½åï¼å
¶å®æ³æ³å°±ç¥éå½æ°ææ¯ä¸ªå
ç´ çå°åæç»æ¯è¾å½æ°ï¼æ ¹æ®æ¯è¾å½æ°çè¿åå¼æ¥å³å®å°åºæ¯aå¨åé¢è¿æ¯bå¨åé¢ï¼æ以å¨å½æ°éé¢è¦å
ååºå¼ï¼æ以ä¸è¬çåæ³å°±æ¯
int cmp(const void*a,const void*b)
{
return *(T*)a-*(T*)b;
}
å
强å¶è½¬æ¢æTç±»ååç¨åå¼ç¬¦å·*ååºæï¼å½æ°ä¹æ以ç¨ç©ºæéæ¯å 为空æéå¯ä»¥æåä»»ä½ç±»åï¼å¯¹äºåºæ¬ç±»åï¼åªè¦å°Tä¿®æ¹ä¸ºåºæ¬ç±»åå°±è¡äºï¼å¯¹äºç»æä½ä¹ç±»ççæéï¼åreturn ((T*)a)->x-((T*)b)->x;å
¶ä¸Tå°±æ¯ç»æä½çå称ï¼xå°±æ¯ä½ è¦æ¯è¾çå段ï¼å½ç¶å¦æä½ è¦éåºçè¯å°±å°abé¢ åå°±è¡äºï¼è¯´äºè¿ä¹å¤ï¼åä¸ä¸ªä¾åï¼æ¯å¦è¦å¯¹ä¸é¢çæ°ç»æåº
int a[5]={2,10,5,4,0};
qsort(a,5,sizeof(int),cmp);
æ¯è¾å½æ°
int cmp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
ããåµåµï¼å°å¦äºç¹ãå¸æå¯¹ä½ æ帮å©
温馨提示:内容为网友见解,仅供参考