折半查詢演算法

2021-08-10 10:36:24 字數 1240 閱讀 8946

二分查詢:

實際的場景中,有些的數列是進過排序的,或者經過排序來呈現某種線性結構。

操作步驟:

首先設定三個變數lownum,midnum,highnum分別儲存陣列元素的開始,中間和結尾。

假設有10個元素,開始令lownum = 0, highnum=9. midnum = (lownum + highnum) / 2 = 4  接著進行判斷

1、如果序號midnum的陣列元素的值與x相等,表示查詢到資料,返回midnum

2、否則如果x < a[midnum], 表示要查詢的資料x 位於lownum 與 midnum -1 之間,不需要再去查詢midnum 與 highnum序號之間的元素,因此將highnum 改為 midnum - 1

重新查詢lownum與midnum -1之間的資料

3、如果x > a[midnum] ,表示查詢的資料位於midnum + 1 與 highnum 序號之間, 則不需要再去查詢lownum 與 midnum之間的元素,因此將lownum改為midnum + 1,

重新查詢midnum + 1 與 highnum 之間的資料。

4、逐步迴圈,如果lownum > highunm 時未找到目標資料,則表示該陣列中沒有該資料。

//#include "stdafx.h"

#include #include #include #include #include using namespace std;

#define n 15

int binarysearchfun(int a, int n, int x)

else if(a[mid] > x)

else

}return -1;

}void quicksort(int *arr, int left, int right)

while(arr[rtemp] > f) // 查詢右邊值大於邊界值

if(ltemp <= rtemp) // 交換資料位置

}if (ltemp == rtemp)

if (left < rtemp)

if (ltemp < right) }

int main(int argc, char* argv)

cout<<"before search -------------"<>x;

n = binarysearchfun(array, n, x);

if (n < 0)

{ cout<<"not found!"<

查詢演算法 折半查詢演算法

折半查詢演算法 binary search param a 乙個有序的集合 本次為由小到大 param x 需要查詢的值 ps 首先使用折半演算法的時候 集合必須是有序的 eg a 1,3,5,7,9 x 3 a mid low height 1,3,5,7,9 2 0 1 1,3 0 1 1 3 ...

查詢演算法 折半查詢

本小節知識點 1.掌握 基本思路 2.掌握 實現步驟 3.了解 練習 1.基本思路 在有序表中,取中間元素作為比較物件,若給定值與中間元素的要查詢的數相等,則查詢成功 若給定值小於中間元素的要查詢的數,則在中間元素的左半區繼續查詢 若給定值大於中間元素的要查詢的數,則在中間元素的右半區繼續查詢。不斷...

折半查詢演算法

折半查詢法 從表列中查乙個數最簡單的方法是從第1個數開始順序查詢,將要找的數與表列中的 數一一比較,直到找到為止 如果表列中無此數,則應找到最後乙個數,然後判定 找不到 但這種 順序查詢法 效率較低。如果表列中有1000個數,且要找的數恰恰是第1000個數,則要進行1000次比較才得到結果。平均比較...