2010年11月12日 星期五

C語言Qsort用法2






小弟上次Qsort講解的不好 ,(上次的)
因此在這裡補上一彈 ,
首先 ,
先介紹C函式的網站 ,
http://www.cplusplus.com/
在那搜尋地方打上要的函式 ,
將會有文字介紹 ,
不過今天介紹結構排序 ,
相信一用之後大家都懂了 ,
這部分是宣告的部分 ,

struct In
    {
        double x , y ;
    } n[nodeAmount] ;
這是將要自己提供的部分 ,

int qsortXY(const void *a, const void *b) {
    struct In *intOne = (In*)a;
    struct In *intTwo = (In*)b;
    if ((intOne->x) < (intTwo->x))
        return -1;
    if ((intOne->x) == (intTwo->x)){
        if ((intOne->y) < (intTwo->y))
           return -1;
        if ((intOne->y) == (intTwo->y))
           return 0;
        return 1;
    }
    return 1;
}
在這裡講解一下qsort為何要自己寫一小段 ,
qsort函式需收到一個值來做判別大小 ,
以下是回傳值寫法 (qsort排序將由小至大),
a < b 時 return (負值) ,
a = b 時 return 0 ,
a > b 時 return (正值) ,
若是想要排序由大至小 ,
將上面的回傳值是正與負顛倒就沒問題 ,
讓小弟上面回傳的程式碼是在一個平面上所用的 ,
先排序x軸由小至大 ,
若是x軸相等時 ,
比較y軸 ,
且一樣由小至大 ,
今天提供了C函式查詢網站與qsort回傳值詳細介紹 ,
相信大家對qsort又有更深一步的了解 ^_^