演算法:二分法查詢適用於資料量較大時,但是資料需要先排好順序。主要思想是:(設查詢的陣列區間為array[low, high])
(1)確定該區間的中間位置k
(2)將查詢的值t與array[k]比較。若相等,查詢成功返回此位置;否則確定新的查詢區域,繼續二分查詢。區域確定如下:a.array[k]>t 由陣列的有序性可知array[k,k+1,……,high]>t;故新的區間為array[low,……,k-1]b.array[k]# !/bin/bash
array=(...) #陣列長度為n
read -p "請輸入要查詢的數字" num
left=0
right=n-1; #此處的n為陣列長度
mid=0 #先賦予3個變數值,方便後面使用
for (( ;left<=right; )) #當變數left大於right時迴圈結束,即查詢區間為空時終止迴圈
do mid=`expr \( $ + $ \) / 2` #expr後方的復合運算需要以\( 數學表示式 \)來表示這個數學表示式的值
if test $ -eq $key #判斷中間值是否和要查詢的數相等
then
echo "$存在"
break #若數存在,則直接跳出迴圈
elif test $ -gt $key #若中間值比要查詢的數大,則需要繼續查詢比中間值要小的數
then
right=`expr $mid - 1` #將搜尋區間縮小為中間值前的區間
else
left=`expr $mid + 1` #若中間值比要查詢的數小,則需要繼續查詢比中間值大的數,將搜尋區間縮小為中間值後的區間
fidone
if test $left -gt $right #若變數left比right還要大,則說明所有值取完後仍未找到要查詢的值,代表所查詢區間已不存在,即要查詢的數不存在
then
echo 「¥不存在」
fi
《漫畫演算法》筆記 上篇
漫畫演算法 小灰的演算法之旅 魏夢舒 程式設計師小灰 著 小灰用漫畫 可愛的手繪小倉鼠 的形式,給演算法這顆 炮彈 包上了 糖衣 讓演算法的為力潛藏於內,外表不再嚇人,變得萌萌噠,q彈可愛。本書通過主人公小灰,用漫畫的形式講述了演算法與資料結構的基礎知識 複雜多變的演算法面試及演算法的實際應用。學習...
螺旋陣列演算法 上篇 直接模擬演算法
引子 螺旋矩陣是乙個比較經典的演算法練習題。多數場景下要求練習者編寫程式按螺旋方式填充乙個邊長為n n 0 的二維整形陣列。如圖 另外,還有的是將1至於螺旋中心,或者逆時針方向演進的。之所以今天發文討論這個螺旋陣列,主要有以下幾點 1 螺旋陣列是乙個經典習題 2 很多初級程式設計師至今沒有找到理想的...
《聊聊資料結構與演算法》之排序演算法 上篇
資料結構與演算法一直作為計算機軟體領域的核心基礎之一,其在軟體程式設計領域始終發揮著不可或缺的作用。鑑於軟體開發以及軟體測試的從業者而言,更是一種提公升自身能力的重要途徑。換句話說,如何讓自己的 寫的妙不可言或者快速閱讀一些開源 享受源 帶來的喜悅與興奮,我們還是有必要熟悉和掌握資料結構與演算法。個...