二分查詢,又名折半查詢,在有序陣列中查詢元素的效率很高;缺點就是只能查詢有序表,因此適用於不用頻繁插入刪除的有序表
如果沒有二分查詢,通過遍歷來查詢表中元素的時間複雜度為o(n)
而二分查詢時間複雜度為o(lgn)
//二分查詢的非遞迴形式
int binaryresearchnonr(int *arr,int left, int right, int key)
else if (arr[mid] < key)
else
}//沒有找到,返回-1
return -1;
}
//二分查詢的遞迴形式
int binaryresearch(int* arr, int left, int right, int& key)//這裡我們傳入引用,避免了值傳遞的拷貝過程
else if (arr[mid] < key)
else
//沒有找到,返回-1
return -1;
}
void testbinartresearch()
; int key = 9;
int ret = binaryresearch(arr, 0, 9, key);
cout << ret << endl;
}
二分查詢 遞迴和非遞迴
二分查詢要求 資料儲存在順序儲存結構中 數字有序排放 原理 將陣列分為三部分,依次是左值,中值,右值 將要查詢的值和陣列的中值進行比較,若小於中值則在中值前 面找,若大於中值則在中值後面找,等於中值時直接返回。然後依次是乙個遞迴過程,將前半部分或者後半部分繼續分解為三部分。迴圈實現二分查詢 temp...
遞迴和非遞迴的二分查詢
思路很簡單,注釋已標註 include 遞迴二分查詢 int binarysearch int start,int end,intfinddata int mid start end start 2 根據中間值不斷二分縮小待查元素所在範圍 if finddata mid else if findda...
二分查詢的遞迴和非遞迴
二分查詢,這個適用於已經排序好了的陣列,沒有排序那就先排序,不過要根據實際的情況,要是排序代價很小,這樣很好了 2.15,在有序陣列中查詢,利用二分查詢的方法 include using namespace std 二分查詢 也可以通過遞迴實現 int sort int a,int length,i...