所以基本上我嘗試構造一個遞歸函數來對已排序的數組執行二分搜索,儘管我很清楚在它後面流動的基本邏輯,但問題出現在我只需要傳遞三個參數給函數,它們是數組,它的大小和要搜索的項目。我知道我必須在數組的上半部分調用函數,如果該項位於數組的後一部分,反之亦然,但我該怎麼做?我在內部製作兩個新陣列,我該如何做到這一點?我很困惑使用遞歸只使用三個參數表在數組上進行二進制搜索
-1
A
回答
-1
你甚至可以用2個參數來做。這裏是我的僞代碼:
find(array, item){
//base case to return the item if found
if(array.length == 1 && array[0].equals(item)) {
return array[0];
}
else {
return null;
}
//decide in which half to continue the search
if(array[array.length/2] >= item) {
return find(createSubArray(array, 0, array.length/2 -1);
}
else {
return find(createSubArray(array, array.length/2, array.length-1);
}
//never reached
return null;
}
這不會保護傳遞給方法的空數組或空值。
0
如果你在C/C++中這樣做的關鍵是要意識到數組作爲指針傳遞。因此,每次您遞歸調用函數時,都可以使用指針算術和明智選擇的大小指定數組的哪一部分。
相關問題
- 1. 數組排序使用遞歸二進制搜索
- 2. 爲什麼不使用遞歸進行二進制搜索排序的數組
- 3. 使用二維數組在C++中進行二進制搜索
- 4. 遞歸二進制搜索
- 5. 二進制遞歸搜索
- 6. 只使用1個參數在int數組中進行遞歸二分法搜索
- 7. 使用javascript進行二進制搜索
- 8. 使用二進制遞歸函數查找列表的索引
- 9. 二進制C搜索遞歸函數只接受長度
- 10. 遞歸二進制搜索在C++
- 11. 在Mips程序集中使用遞歸進行二進制搜索
- 12. 在Python中使用遞歸插入二進制搜索樹
- 13. 使用Ruby在散列數組中進行遞歸(或普通搜索)搜索
- 14. 如何在二維數組中使用二進制搜索?
- 15. 使用二進制搜索
- 16. 在未知大小的數組上進行二進制搜索
- 17. 排序數組中的遞歸二進制搜索C++
- 18. 我想要一個遞歸函數中使用二進制搜索
- 19. 遞歸二進制搜索/ C
- 20. C++通過遞歸二進制搜索
- 21. Python遞歸二進制搜索功能
- 22. 遞歸二進制搜索c
- 23. Java二進制搜索遞歸
- 24. 遞歸二進制搜索樹刪除
- 25. 遞歸二進制搜索樹插入
- 26. 遞歸二進制搜索Java
- 27. 遞歸和二進制搜索
- 28. 遞歸二進制搜索和排序
- 29. Java遞歸二進制搜索
- 30. 使用遞歸方法進行三元搜索
whay將數組和它的大小添加爲不同的參數?大小是數組的屬性。 – Dennis 2014-12-05 14:49:16
請考慮添加標籤,指出您正在使用/感興趣的編程語言。 – 2014-12-05 14:57:10
@Dennis,即假設他們使用的是提供大小或長度的語言。 – ChiefTwoPencils 2015-02-15 06:11:17