Shell演算法(上篇)

2021-09-02 15:22:02 字數 997 閱讀 2353

演算法:二分法查詢適用於資料量較大時,但是資料需要先排好順序。主要思想是:(設查詢的陣列區間為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 很多初級程式設計師至今沒有找到理想的...

《聊聊資料結構與演算法》之排序演算法 上篇

資料結構與演算法一直作為計算機軟體領域的核心基礎之一,其在軟體程式設計領域始終發揮著不可或缺的作用。鑑於軟體開發以及軟體測試的從業者而言,更是一種提公升自身能力的重要途徑。換句話說,如何讓自己的 寫的妙不可言或者快速閱讀一些開源 享受源 帶來的喜悅與興奮,我們還是有必要熟悉和掌握資料結構與演算法。個...