最終**
溢位問題在迴圈體中,一般計算中間值middle時所用的是:
middle=
(left+right)/2
;
但是這種情況容易溢位,因為一旦left+right超過所在型別的範圍的話,就會出現錯誤,為了不出現這種問題,我們引入了:
middle=left+(right-left)/2
;
邊界問題
迴圈體外的初始化條件,與迴圈體內的迭代步驟, 都必須遵守一致的區間規則,也就是說,如果迴圈體初始化時,是以左閉右開區間為邊界的,那麼迴圈體內部的迭代也應該如此.如果兩者不一致,會造成程式的錯誤。
左閉右開區間類似[left,right)
while
(left < right)
else
if(list[middle]
> target)
else
if(list[middle]
< target)
}
左閉右閉區間[left,right]
while
(left <= right)
else
if(list[middle]
> target)
else
if(list[middle]
< target)
}
#define _crt_secure_no_warnings 1
#include
#include
intbinary_search
(int
* list,
int len,
int target)
else
if(list[middle]
> target)
else
if(list[middle]
< target)
}printf
("未找到該值!");
程式設計師成長之旅 二分查詢時間與空間複雜度
空間複雜度 非遞迴int binary search int list,int len,int target else if list middle target else if list middle target printf 未找到該值 return 1 遞迴while left right ...
程式設計師成長之旅 順序表
執行效果 靜態順序表是只適用於我們已經了解到需要存多少資料,而一般我們都是用動態順序表,下面我給大家展示一下我所實現的動態順序表的 seqlist.h define crt secure no warnings 1 pragma once include include include includ...
程式設計師成長之旅 設計迴圈佇列
設計你的迴圈佇列實現。迴圈佇列是一種線性資料結構,其操作表現基於 fifo 先進先出 原則並且隊尾被連線在隊首之後以形成乙個迴圈。它也被稱為 環形緩衝器 迴圈佇列的乙個好處是我們可以利用這個佇列之前用過的空間。在乙個普通佇列裡,一旦乙個佇列滿了,我們就不能插入下乙個元素,即使在佇列前面仍有空間。但是...