Re: [閒聊] VC2005 的 qsort 好像有bug...
謝謝回應
本人回應太慢 對不起
我也不是很有把握
我用內建的IDE 測了不同的 data type, int, float, double
只有double 20個時 發生問題 ( 測試個數 5, 6, 8, 10, 20)
我把code貼上來 請各位指教一下
typedef struct _record_
{
double value;
int position;
} s_reorder;
int compare_record( const void *arg1, const void *arg2 )
{
return (int) ( (*(s_reorder *)arg2).value> (*(s_reorder *)arg1).value);
}
int main(void)
{
// reorder 是一維陣列 , size= m> 20, 沒有相同的element
qsort( (void *)( reorder), (size_t) m, sizeof( s_reorder), compare_record );
}
我用相同的資料結構 自己寫一個 _qsort_ 沒再多呼叫compare 是正確的結果
我記得當初debug時 有把structure 拿掉 還是相同的情形
一兩個月前了 又因為自己寫了_qsort_也還好
就沒再多做實驗 也有些情況沒記那麼清楚 好像 30, 40, 50 個double 都有錯
最近程式告一段落 才想來問看看...
以下是錯的結果
0 121.714397
1 -0.785398
2 -2.520560
3 -0.791447
4 -0.855704
5 -1.695513
6 -1.455394
7 -1.857532
8 -2.066145
9 -3.284361
10 -2.275599
11 -3.423782
12 -3.641737
13 -5.068104
14 -6.149263
15 -7.107637
16 -10.794325
17 -15.191077
18 -17.749103
19 -35.001716
謝謝囉
※ 引述《zhim (zhim)》之銘言:
: 標題: [閒聊] VC2005 的 qsort 好像有bug...
: 時間: Wed Dec 2 06:08:56 2009
:
: 用VC2005內建的qsort
:
: 幫20個 double排序 好像會得出錯的順序
:
: 不知是否有人有相同的經驗?
:
: 還是MS 已經有patch了...
:
:
: 希望 patch != VC2008 ....
:
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.115.51.64
: → sunneo:你有在別的IDE測試嗎 12/02 08:38
: 推 LPH66:你是怎麼寫的...? 12/02 08:39
: 推 ledia:通常是自己寫錯 12/02 09:18
: → ledia:(這裡的通常, 大約是 99.99%) 12/02 09:18
: → VictorTom:寫程式結果有錯都不會先懷疑自己寫錯就覺得是環境給的 12/02 09:30
: → VictorTom:lib有錯嗎Orz 這麼有自信的話直接貼code來看就知道了XD 12/02 09:30
: → tomnelson:(99.9% + 0.1%)寫錯... 12/02 10:51
: → tomnelson:我敢猜問題出在那個傳入qsort的cmpfunc(比較函式)... 12/02 10:55
: → tomnelson:題外話,寫程式出問題就怪罪到IDE或compiler,不是好事,雖 12/02 10:57
: → tomnelson:然這種事也真的有,但是在已經成熟而且在市面上的產品上 12/02 10:58
: → tomnelson:來說,真的少見,頂多是在compiler最佳化那邊出問題,這種 12/02 11:00
: → tomnelson:內建functions出問題的,還沒遇過. 12/02 11:00
: → tomnelson:請參考別人"犯錯心得"如下兩網址: 12/02 11:12
: → tomnelson:http://ppt.cc/kPN0 12/02 11:13
: → tomnelson:http://ppt.cc/Ctst 12/02 11:13
: 推 ledia:我隔空抓藥一下, 他大概回傳 *(double*)x-*(double*)y; 12/02 13:22
: → ledia:當 x, y 差距太小, 回傳又 cast 成 int 就會變為 0 ... 12/02 13:22
: → bugmens:原po都不吭聲,大家debug倒是解的很高興 12/02 18:07
: 推 walker2009:樓上是bug, 抓到了 XD 12/02 18:44
: → sunneo:大家都講得太明了 -.- 我反倒想看看他測了幾個IDE來下結論 12/02 22:27
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.51.64
推
12/03 05:05, , 1F
12/03 05:05, 1F
推
12/03 05:09, , 2F
12/03 05:09, 2F
→
12/03 05:09, , 3F
12/03 05:09, 3F
→
12/03 05:10, , 4F
12/03 05:10, 4F
→
12/03 05:33, , 5F
12/03 05:33, 5F
推
12/03 09:13, , 6F
12/03 09:13, 6F
→
12/03 09:14, , 7F
12/03 09:14, 7F
→
12/03 09:15, , 8F
12/03 09:15, 8F
→
12/03 09:18, , 9F
12/03 09:18, 9F
→
12/03 09:19, , 10F
12/03 09:19, 10F
→
12/03 11:38, , 11F
12/03 11:38, 11F
推
12/03 13:36, , 12F
12/03 13:36, 12F
推
12/03 15:33, , 13F
12/03 15:33, 13F
→
12/03 17:48, , 14F
12/03 17:48, 14F
→
12/03 21:52, , 15F
12/03 21:52, 15F
→
12/04 14:11, , 16F
12/04 14:11, 16F
→
12/04 14:14, , 17F
12/04 14:14, 17F
→
12/04 14:18, , 18F
12/04 14:18, 18F
推
12/04 14:59, , 19F
12/04 14:59, 19F
→
12/04 14:59, , 20F
12/04 14:59, 20F
→
12/04 14:59, , 21F
12/04 14:59, 21F
討論串 (同標題文章)