二分法查詢
二分法查詢是有一定條件的:**等如下,
/*對於二分法查詢有乙個最重要的條件就是必須是已經排好序的陣列;
資料查詢成功返回序列號,否則返回-1*/
#include int diguifa(int *a,int key,int low,int high);
int feidigui(int *a,int key,int n);
int main(int argc,char *argv)
; int key=0;//查詢資料關鍵字
printf("輸入查詢資料:");
scanf("%d",&key);
printf("遞迴查詢結果:%d\n",diguifa(a,key,0,sizeof(a)/sizeof(a[0])));
printf("非遞迴查詢資料輸入:");
scanf("%d",&key);
printf("遞迴查詢結果:%d\n",feidigui(a,key,sizeof(a)/sizeof(a[0])));
return 0;
}int diguifa(int *a,int key,int low,int high) //遞迴法實現二分法
if(a[mid]==key)
return mid;
else return -1;
}
二分法時間複雜度與空間複雜度。:
1.最壞情況查詢最後乙個元素(或者第乙個元素)t(n)=t(n/2)+o(1)所以t(n)=o(logn)
2.最好情況查詢中間元素o(1)查詢的元素即為中間元素(奇數長度數列的正中間,偶數長度數列的中間靠左的元素)
空間複雜度:
s(n)=n
二分法查詢資料
首先你儲存的資料內容必須是有序的 其次找到中間值 然後將你想要的查詢的值進行對比 如果比他大就去右邊尋找 反之就往左邊尋找 public static void main string args scanner b newscanner system.in system.out.println 請輸...
資料結構與演算法 二分法查詢
資料結構與演算法 二分法查詢 查詢的陣列必須是有序的 可以和氣泡排序合起來用 使用二分法查詢能提高查詢效率 每次查詢砍掉一半的資料量,2 n 資料量,n就是二分法查詢的次數 普通二分法查詢,返回索引 lst 0 1,2 3,4 5,6 7,8 9,10 11,12 13,14 15,16 17,18...
20 資料結構 二分法查詢(筆記)
搜尋是在乙個專案集合中找到乙個特定專案的演算法過程。搜尋通常的答案是真的或假的,因為該專案是否存在。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢。二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經...