C 二分查詢的遞迴形式和非遞迴形式

2021-07-25 19:43:47 字數 795 閱讀 4889

二分查詢,又名折半查詢,在有序陣列中查詢元素的效率很高;缺點就是只能查詢有序表,因此適用於不用頻繁插入刪除的有序表

如果沒有二分查詢,通過遍歷來查詢表中元素的時間複雜度為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...