一 寫在開頭
1.1 本節內容
本節主要內容是有關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類型。因此,將上述程序改寫成下面的樣子,問題解決。