查詢演算法 一 之二分查詢

2021-08-16 14:04:04 字數 1300 閱讀 1076

二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列

首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

時間複雜度可以表示o(h)=o(log2n)

/** * 二分查詢

* *@author 唐學俊

*@create 2018/03/09

**/public

class

binaryserch ;

int key = 14;

int i = this.binarysearch(arr, key);

system.out.println(i);

}/**

* 二分查詢

**@param arr

*@param key

*@return

*/public

intbinarysearch(int arr, int key) else

if (key > arr[m]) else

return -1;

}return

0; }

}

@test

public

void

fun2() ;

int key = 15;

int i = this.binaryserch2(arr, key,0,arr.length);

system.out.println(i);

}/**

* 二分查詢遞迴實現

**@param arr

*@param key

*@return

*/public

intbinaryserch2(int arr, int key, int s, int e) else

if(key < arr[m])else

}return -1;

}

查詢演算法之 二分查詢

這個例項給出了二叉搜尋演算法在9個元素的陣列arr中查詢某個目標值的過程01 2345 678 7 35812 1623 3355 例子1 查詢目標值2301 2345 678 7 35812 1623 3355 步驟1 索引範圍 0,9 索引first 0,last 9,mid 0 9 2 4 t...

查詢演算法之二分查詢

二分查詢,也是經常會問道的,以下寫法主要是針對已經排好序,且不會受到重複元素影響的陣列使用。二分查詢 param string find 要查詢的值 param array array 要查詢的陣列 return bool string function binarysearch find arra...

查詢演算法之二分查詢

在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0。對於這樣的有序序列,可以使用二分查詢的演算法來實現。如下圖序列,二分查詢20。在有序表中,取中間資料作為比較物件,若給定值與中間記錄的數值相等,則查詢成功 若給定值小於中間值的數值,則在中間值的左半...