使用C語言中qsort()函數對浮點型數組無法成功排序的問題


一 寫在開頭

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類型。因此,將上述程序改寫成下面的樣子,問題解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM