二分查詢法及其擴充套件

2021-07-28 06:42:05 字數 1033 閱讀 7228

二分查詢法源**:

#includeusing namespace std;

int binarysearch(int arr,int len,int goal)

else if (goal < arr[mid])

else

}return -1;

}int main()

; int goal;

int len = sizeof(arr) / sizeof(arr[0]);

cin >> goal;

int res=binarysearch(arr,len,goal);

cout << res << endl;

system("pause");

}

在乙個非遞減有序陣列,從左向右旋轉之後得到的陣列中,查詢最小的值,如[0,1,1,1,1,1]->[1,1,1,1,0,1];最小值為0;

在遞增時使用二分查詢,但是在上例情況下只能遍歷查詢->詳解見劍指offer

#includeusing namespace std;

int miniorder(int *arr, int low, int high)

} return res;

}int findmin(int arr, int len)

mid = (high +low)/2;

if (arr[low] == arr[high] && arr[mid] == arr[low])

if (arr[low] <= arr[mid])

else if (arr[low] >arr[mid])

}return arr[mid];

}int main()

; int len = sizeof(arr) / sizeof(arr[0]);

int res=findmin(arr, len);

cout << res << endl;

system("pause");

}

二分搜尋及其擴充套件

二分搜尋需要注意開閉區間的問題,限制條件和邊界要保持配對 low high low mid 1 high mid 1。二分搜尋的模板如下 cpp view plain copy 二分搜尋 intbinarysearch int num,intkey,intlow,inthigh return low...

二分搜尋及其擴充套件

二分搜尋 折半搜尋,也稱二分查詢演算法 二分搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一...

二分查詢法

二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...