今天禀享一种 选择排序 的 shell 剧本,多多操练这种近似剧本,对于shell 剧本的利用和理解算法仍是比力有帮忙的;
起首我们看下 ,剧本的结果;就是 提醒 输入一组 数字(数字之间要有空格,否则会默认为是一个数字,在linux系统中划分数字,一般以 空格划分)然后将这组数字,从小到年夜从头排序输出;
之后我们看一下,在了 linux 中,怎么界说 一个数组;和输出 这个数组;还有单个输出 数组内的元素;如下图,单个输出数字就是依靠 数组中的下标;也是我们选择排序的关头;
在剧本中 获取 数组 ,同样需要 read 获取键值,同时我们 需要加 选项 -a 来界说 剧本中的 N 是数组变量,并把接管到的 数字 放到 N 里面;
下图是我百度到的选择排序的界说,大师可以看看,理解一下,算法理解了,如许敲代码写剧本也会更快,更驾轻就熟;
然后直接 放 剧本;大要诠释一下我的思绪,就是两层 for 轮回,让 数组 内的数组可以都比力一遍;同时 在 轮回内 进行 数子巨细比力 和 换位置;
如图 画圈的 代码,就是界说 一个 min 变量记住轮回内 数字的位置 ;然后经由过程 二层 for 轮回进行比力,若是 后面的变量 $j 这个下标代表的数字 ${N[$j]} 比 $min 代表的数字小,那么 就用 min标识表记标帜这个数,半斤八两于交换下标了;
然后就是 关头的 换数值,如下图,将 $min 代表的小的数字 ( 已经换过的),给到此刻 的 $i , $i 代表的年夜一点的数字给到 $min ; 如许最小的数字就排到了前面;
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!