陣列的搜尋演算法:從指定陣列中去搜尋某乙個元素的索引是多少。
方式1:
線性搜尋。從頭搜到尾或從尾搜到投。indexof、lastindexof
對於元素過多的陣列,效能極低。
方式2:
二分搜尋法/二分查詢法/折半查詢
前提:陣列元素必須是有順序。
猜數遊戲:
乙個朋友讓你猜她正在想的乙個從1到100至今的數,等你猜了,她會告訴你三種結果:你猜的比她想的大,或小,或猜中了。
切了能用最少的次數猜中,必須從50開始猜。如果她說你猜的小了,那麼就能推出那個數在50-100之間,所以馬上猜75。
反之,如果她說你猜大了,你也能明白那個數在1-50之間,所以馬上猜25.
如此反覆,範圍越來越小,知道猜到為止。
/**
* 從陣列arr中搜尋key的元素,找到返回所以,沒有找到返回-1
*@param arr
*@param key
*@return
*/public
static
intbinarysearch(int arr, int key)else
if (mid < key)else
}return -1;
}
Java 二分法查詢演算法
今天看演算法時無意間想起二分法查詢演算法,感覺很基礎,很不錯,分享給大家。二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字...
Java 二分法查詢
這學期學了資料結構這門課,這會都期末了才想起來更新部落格,所以我就來了,話不多說。如下 package com.vgbh public class binarysearch 二分法查詢必須是已經排序好的數列,且必須為正序,才可進行查詢 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢...
Java二分法查詢
前提 必須是有序的資料。基本思想 把乙個有序的資料乙份為二。然後判斷是比目標資料大了還是小了,如果小了往左邊的部分找 如果大了往右邊的資料找。確定了找的方向後再次把資料一分為二,繼續上面的步驟直到找到為止。涉及到了遞迴的思想。通俗的講 每次減少一半,然後確定方向,再次減少一半,直到找到為止。1 傳入...