二分查詢又稱折半查詢,它是一種效率較高的查詢方法。
折半查詢的演算法思想是將數列按有序化(遞增或遞減)排列,查詢過程中採用跳躍式方式查詢,即先以有序數列的中點位置為比較物件,如果要找的元素值小 於該中點元素,則將待查序列縮小為左半部分,否則為右半部分。通過一次比較,將查詢區間縮小一半。 折半查詢是一種高效的查詢方法。它可以明顯減少比較次數,提高查詢效率。但是,折半查詢的先決條件是查詢表中的資料元素必須有序。
二分演算法步驟描述
① 首先確定整個查詢區間的中間位置 mid = ( left + right )/ 2
② 用待查關鍵字值與中間位置的關鍵字值進行比較;
若相等,則查詢成功
若大於,則在後(右)半個區域繼續進行折半查詢
若小於,則在前(左)半個區域繼續進行折半查詢
③ 對確定的縮小區域再按折半公式,重複上述步驟。
最後,得到結果:要麼查詢成功, 要麼查詢失敗。折半查詢的儲存結構採用一維陣列存放。 折半查詢演算法舉例
對給定數列(有序),按折半查詢演算法,查詢關鍵字值為81的資料元素。
daimar
public class binarysearch ;
system.out.println(binsearch(srcarray, 0, srcarray.length - 1, 81));
} // 二分查詢遞迴實現
public static int binsearch(int srcarray, int start, int end, int key)
if (start >= end) else if (key > srcarray[mid]) else if (key < srcarray[mid])
return -1;
} // 二分查詢普通迴圈實現
public static int binsearch(int srcarray, int key)
int start = 0;
int end = srcarray.length - 1;
while (start <= end) else if (key > srcarray[mid]) else
}
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 二分查詢演算法
程式設計之美在於演算法之美,先來看看二分查詢的演算法 隱藏條件 二分查詢必須是有序的,從小到大,或從大到小的排序才能進行二分查詢,下面來看看 package com.cn.daming public class mainactivity 排序是從小到大 int aints2 new int 排序是從...