本節主要內容是有關C語言中qsort()函數的探討。數組
qsort()是C標準庫中的一個通用的排序函數。它既能對整型數據進行排序也能對浮點型數據進行排序。今天在寫C語言程序時遇到了一個奇怪的事情。在使用qsort()對double型數據排序時,我發現qsort()居然沒有排序成功,數組中的數據仍然是亂序的!好比下圖所示的這個程序。
上面這個程序的輸出結果爲:1.72 1.78 1.61 1.65 1.70 1.56。和原始輸入數據順序一致。也就是說qsort()函數根本沒有起到應有的做用。這是爲何呢?
後來才發現,這個問題出在了比較函數Compare()上了。qsort()要求Compare()函數的返回值必須是int類型。如上圖所示,Compare()函數的返回值居然不是int而是double類型。所以,將上述程序改寫成下面的樣子,問題解決。
函數