二分法查詢數字 演算法分析和原始碼

2021-06-22 16:54:22 字數 689 閱讀 6705

採用二分法查詢數字是用的比較多的一種方法

其演算法思想可以這樣理解:

比如有一行數:1 6 9 10 15 

要找到其中某乙個數的位置,最簡單的一種演算法是窮舉法,顧名思義,就是遍歷這一行所有的數,比較,最後找到這個數,然後輸出位置,如果到最後還是沒有,就列印說沒有找到該數

這裡涉及到乙個概念,就是演算法時間複雜度(好像是這樣稱呼的)

窮舉演算法的複雜度是和n成一次函式的,所以複雜度是n,這樣沒有什麼不好,但是該演算法占用的時間比較長,所以效率比較低,程式的靈活性差

那麼怎麼辦?--該問題即轉化為如何避免過長的n呢?

可以用二分法的思想,注意:二分法只能用於序列有序的一列數

要查詢的數每次和中間的這個數比較,如果是大於middle,則說明該數在後半段,如果小於,說明該數在前半段,這樣就把窮舉數列縮短了一半,同理在下乙個數列中以此類推,都是一半一半進行比較比較,這樣總是1/2,有n個1/2,所以時間複雜度是log2n,時間複雜度遠遠小於窮舉演算法

下面是部分**:

int func(int a,int n,int i,int j)

if(a[mid]>n)

else

}else

//return (j+1);

/*if(i>j)

*/}

查詢演算法 二分法

二分查詢演算法的基本思想 一.首先確定該區間的中間元素位置 mid low high 2 mid代表區間內中間元素的位置 low代表區間內最左邊元素的位置 high代表區間內最右邊元素的位置 二.將待查key元素值與中間元素mid的值 array mid 比較,如果相等,則查詢成功,否則確定新的查詢...

演算法 二分法查詢

1 2 二分法實驗 31 設a 0 n 1 是乙個已排好序的陣列.4請改寫二分搜尋演算法,使得當搜尋元素x不在陣列中時,5返回小於x的最大元素的位置i和大於x的最大元素位置j.6當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置.72 設有n個不同的整數排好序後存放於t 0 n 1 中,8若存在...

演算法 二分法查詢

免費 二分法查詢主要是為了快速查詢給定陣列內,期待值在陣列中的位置 下標 二分法查詢通過對整個陣列取中間值,判斷期待值所在的範圍並縮小範圍,每次查詢範圍折半,直到範圍的邊界重合,得出期待值的位置,如果找不到返回null 二分法有乙個先決條件是 陣列內元素必須是有序的 給定乙個包含1,3,5,7,8,...