[問題] 二元搜尋法

看板C_and_CPP (C/C++)作者 ( Kaonashi)時間16年前 (2009/05/14 23:37), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串1/3 (看更多)
在一個排完順序後的分數陣列裡 用二元搜尋法來尋找某一個分數在這列中的位置 然後我也要找 這個數字在這個陣列中 是第幾個高分 然後也要找這個分數 在陣列裡面有幾個是同分的 我遇到的問題是.... 當重複的分數一多的時候 找到的第幾高分會有錯誤耶 UnSorted numbers : 10 54 84 81 72 39 10 93 64 81 27 10 10 64 10 20 10 Sorted numbers : 10 10 10 10 10 10 20 27 39 54 64 64 72 81 81 84 93 Please enter the score what you want to search:10 The rank of the score is: 14 The number of the score is:6 要從二元搜尋法的程式碼裡來做修正? 還是從找幾個同分的程式碼來做修正? 程式碼有點多 如果需要的話我在PO上來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.252.6

05/15 00:12, , 1F
PO吧 要註解.....
05/15 00:12, 1F

05/15 00:15, , 2F
先用二分搜尋找到目標分數, 再找頭找尾算幾個一樣的??
05/15 00:15, 2F

05/15 00:16, , 3F
沒錯啊 第14個的確是10啊
05/15 00:16, 3F

05/15 00:17, , 4F
二分搜尋只會找一個,他先看到哪一個就是哪一個
05/15 00:17, 4F

05/15 00:17, , 5F
你要教他怎麼處理重覆
05/15 00:17, 5F

05/15 01:07, , 6F
開個 char score[100]; 把有出現的分數設1 在BS一下 END
05/15 01:07, 6F

05/15 13:24, , 7F
從頭找尾算幾個一樣的都 O(n) 了... 那還需要二分搜尋嗎
05/15 13:24, 7F
文章代碼(AID): #1A33h3TW (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 3 篇):
3
7
文章代碼(AID): #1A33h3TW (C_and_CPP)