Java 二分查詢演算法及效率比較

2021-06-23 03:59:02 字數 851 閱讀 6202

1.前提:二分查詢的前提是需要查詢的陣列必須是已排序的,我們這裡的實現預設為公升序

2、原理:將陣列分為三部分,依次是中值(所謂的中值就是陣列中間位置的那個值)前,中值,中值後;將要查詢的值和陣列的中值進行比較,若小於中值則在中值前面找,若大於中值則在中值後面找,等於中值時直接返回。然後依次是乙個遞迴過程,將前半部分或者後半部分繼續分解為三部分。可能描述得不是很清楚,若是不理解可以去網上找。從描述上就可以看出這個演算法適合用遞迴來實現,可以用遞迴的都可以用迴圈來實現。所以我們的實現分為遞迴和迴圈兩種,可以根據**來理解演算法

package com.cn;

//二分查詢法

public class binarysearch

system.out.println(binsearch(searcharr,0,searcharr.length-1,99));

system.out.println(binsearch(searcharr,99));

} public static int binsearch(int arr, int start,int end,int sear)

if(start>=end)else if(sear < arr[mid])else if(sear >arr[mid])

return -1;

} public static int binsearch(int arr,int key)else if(key <= arr[mid])else if(key >=arr[mid])

} return -1; }

}

效率比較:

迴圈二分查詢演算法的效率高於遞迴二分查詢演算法

二分查詢演算法 java

題目 在乙個有序陣列中查詢給定值得下標 其中有兩個前提,一是順序儲存結構,二是儲存結構已經是排好序的。給定前提 int array new int int num 50 intleft 0,right array.length 1 先看看直接用迴圈的方式 int index 1 int middle...

Java演算法 二分查詢

查詢 基本查詢 陣列元素無序 從頭到尾 二分查詢 折半查詢 陣列元素有序 分析 a 定義最大索引,最小索引 b 計算出中間索引 c 拿中間索引的值和要查詢的值進行比較 相等 就直接返回當前的中間索引 不相等 大 左邊找 小 右邊找 d 重新計算中間索引 大 左邊找 max mid 1 小 右邊找 m...

java 二分查詢演算法

二分查詢又稱折半查詢,它是一種效率較高的查詢方法。折半查詢的演算法思想是將數列按有序化 遞增或遞減 排列,查詢過程中採用跳躍式方式查詢,即先以有序數列的中點位置為比較物件,如果要找的元素值小 於該中點元素,則將待查序列縮小為左半部分,否則為右半部分。通過一次比較,將查詢區間縮小一半。折半查詢是一種高...