今天稟享一種 選擇排序 的 shell 劇本,多多操練這種近似劇本,對于shell 劇本的利用和理解算法仍是比力有幫忙的;
起首我們看下 ,劇本的結果;就是 提醒 輸入一組 數字(數字之間要有空格,否則會默認為是一個數字,在linux系統中劃分數字,一般以 空格劃分)然后將這組數字,從小到年夜從頭排序輸出;
之后我們看一下,在了 linux 中,怎么界說 一個數組;和輸出 這個數組;還有單個輸出 數組內的元素;如下圖,單個輸出數字就是依靠 數組中的下標;也是我們選擇排序的關頭;
在劇本中 獲取 數組 ,同樣需要 read 獲取鍵值,同時我們 需要加 選項 -a 來界說 劇本中的 N 是數組變量,并把接管到的 數字 放到 N 里面;
下圖是我百度到的選擇排序的界說,大師可以看看,理解一下,算法理解了,如許敲代碼寫劇本也會更快,更駕輕就熟;
然后直接 放 劇本;大要詮釋一下我的思緒,就是兩層 for 輪回,讓 數組 內的數組可以都比力一遍;同時 在 輪回內 進行 數子巨細比力 和 換位置;
如圖 畫圈的 代碼,就是界說 一個 min 變量記住輪回內 數字的位置 ;然后經由過程 二層 for 輪回進行比力,若是 后面的變量 $j 這個下標代表的數字 ${N[$j]} 比 $min 代表的數字小,那么 就用 min標識表記標幟這個數,半斤八兩于交換下標了;
然后就是 關頭的 換數值,如下圖,將 $min 代表的小的數字 ( 已經換過的),給到此刻 的 $i , $i 代表的年夜一點的數字給到 $min ; 如許最小的數字就排到了前面;
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!