public
class_05折半查詢 ;
intindex = getindex(arr1,4);
//使用折半查詢
intarr2=;
intindex2 = halfserch
(arr2,45);
system.out
.println("index="+index);
system.out
.print("index="+index2);}//
使用折半方法查詢:可以提高效率,但必須是有序陣列 //
思路:1.
是否有返回值(有)
2.方法的引數型別及個數
//3.
定義折半查詢的條件
:最小角標值,最大角標值,中間值
//4.
判斷條件:所查詢的數是否存在
public
static
inthalfserch(intarr2,intkey)//key
代表要查詢的數值
所在角標的數值
mid=(min+max)/2;//
取最小角標與最大角標的中間值 //
判斷條件:即
arr2[mid]
中間值所在角標與所要找的數是否相等
while(arr2[mid]!=key)
else
if(keymax = mid-1;//
如果查詢數比中間角標所在數的值小
,最大角標將從當前角標值左移1位
if(min>max)//
當最小角標大於最大角標時,即沒有找到所查數
mid = (min+max)/2;//
如果上面判斷條件成立,即重新定義中間角標值。 }
returnmid;//
如果以上條件都不成立,說明已經找著了,即將中間角標返回 }
/* * 折半的第二種方式 */
public
static
intserch(intarr,intkey)
return-1;//
沒找著 }//
功能:獲取
key第一次出現在陣列中的位置。如果返回值是-
1,那麼代表該
key不存在 //
思想:1.
該功能有沒有返回值
(有)2.
表示式型別,(陣列和要查詢的數)
public
static
intgetindex(intarr1,intkey)//key
代表要查詢的數值 }
return-1;}}
折半查詢演算法的使用
維基上的 int binary search int a,int key,int imin,int imax key was not found return key not found 評估下面兩個演算法 int binary search size sizeof words sizeof wor...
查詢 折半查詢
折半查詢 int search keytype key,int n,keytype k return 1 查詢失敗,返回 1 在演算法中,n表示記錄的個數。key表示要查詢的關鍵字。key為關鍵字順序表,每個元素都是對應記錄的關鍵字。例如key 0 為第0個記錄的關鍵字。如果每條記錄的資訊與它的關鍵...
查詢之折半查詢
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...