二分查詢:
實際的場景中,有些的數列是進過排序的,或者經過排序來呈現某種線性結構。
操作步驟:
首先設定三個變數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次比較才得到結果。平均比較...