從第乙個遍歷判斷到最後乙個,查詢到全部符合條件的值。(遍歷陣列找到就返回下標值(如果有多個可先儲存))
1. publicclass
seqsearch ;//
沒有順序的陣列
4. listsearch = seqsearch(arr, 1);
5. if (search.size() == 0) else
10. }
11.
12. private
static listseqsearch(int arr, int
value)
18. }
19. return
list;
20.
21. }
22. }
1. 首先確定該陣列的中間的下標:mid = (left + right) / 2
2. 然後讓需要查詢的數 findval 和 arr[mid] 比較
2.1 findval > arr[mid] , 說明你要查詢的數在mid 的右邊, 因此需要遞迴的向右查詢
2.2 findval < arr[mid], 說明你要查詢的數在mid 的左邊, 因此需要遞迴的向左查詢
2.3 findval == arr[mid] 說明找到,就返回
什麼時候結束遞迴?
1) 找到就結束遞迴
2) 遞迴完整個陣列,仍然沒有找到findval ,也需要結束遞迴 當left > right就需要退出
思考題 當乙個有序陣列中,有多個相同的數值時,如何將所有的數值都查詢到,比如這裡的 1000.
1. publicclass
binarysearch ;
5. int search = binarysearch(arr, 0, arr.length - 1, 79);
6. listsearchall = binarysearchall(arr, 0, arr.length - 1, 79);
7. system.out.println(search);
8. system.out.println(searchall);
9. }
10.
11. /**
12. *
@param
arr 陣列
13. *
@param
left 左邊的索引
14. *
@param
right 右邊的索引
15. *
@param
findval 要查詢的值
16. *
@return
如果找到就返回下標,如果沒有找到,就返回 -1
17.
*/18. private
static
int binarysearch(int arr, int left, int right, int
findval) else
else
if (findval < arr[mid]) else
30. }
31. }
32.
33. /**
34. * 思考題: 當乙個有序陣列中,
35. * * 有多個相同的數值時,如何將所有的數值都查詢到,比如這裡的 1000
36. * *
37. * * 思路分析
38. * * *1. 在找到 mid 索引值,不要馬上返回
39. * * *2. 向 mid 索引值的左邊掃瞄,將所有滿足 1000, 的元素的下標,加入到集合 arraylist
40. * * *3. 向 mid 索引值的右邊掃瞄,將所有滿足 1000, 的元素的下標,加入到集合 arraylist
41. * * *4. 將 arraylist 返回
42.
*/43. private
static listbinarysearchall(int arr, int left, int right, int
findval) else
else
if (findval else
65. }
66.
67. //
向 mid 索引值的右邊掃瞄,將所有滿足 1000, 的元素的下標,加入到集合 arraylist
68. temp = mid + 1;
69. while (true
) else
76. }
77. return
list;
78. }
79. }
80. }
81. }
線性查詢 二分查詢
在陣列中找出某個值a 線性查詢 二分查詢 線性查詢就是乙個個比較,找出那個值a。二分查詢是針對有序數列,找出中間值nid與a比較,mid a,從mid左邊小於mid的值中查詢,這樣依次縮小查詢空間,找到該值。線性查詢法 value 3 array 1,2,3,4,5,6,7 def ls ary,v...
c 線性查詢 二分查詢
今天蒟蒻來給大家講線性查詢 二分查詢 一 線性查詢思路 1.思路 線性查詢是一種在資料中查詢資料的演算法。線性查詢的操作十分簡單,只要在陣列中從頭開始依次往下查詢即可。如果找到了輸出即可,沒有找到就繼續搜下去。2.先來找10好了 第一步 從3開始找,3不等於10,換下乙個 第二步 到9,9不等於10...
查詢 線性查詢,二分查詢,雜湊法
a.linearsearch for i from 0 to n 1if a i key return i return not found b.linearsearch i 0 a n key while a i key i if i n return not found return i區別 a...