我是靠谱客的博主 平常猫咪,最近开发中收集的这篇文章主要介绍Shell小技巧(六十三)冒泡排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

冒泡排序是一种逻辑简单的排序算法。上学的时候作为编程教材。

算法描述

1.比较相邻的元素。如果第一个比第二个大,就交换它们两个;
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
3.针对所有的元素重复以上的步骤,除了最后一个;
4.重复步骤1~3,直到排序完成,即不再发生任何位置交换

代码:

#!/bin/bash

#Bubble Sort

arr=(22 18 5 11 17 23 50 78 30 61)  #定义一个无序的数组

arrtotal=${#arr[@]} #获得数组元素数量

let lastone=arrtotal-1 #获得数组最大序号

echo ${arr[@]}  #输出数组,为何结果顺序比较用 

echo "--->>>"

flag=0 #一个标记,如果发生了顺序交换则复制0,代表需要再进行下一次循环

while [ $flag -eq 0 ]; do

     for((i=0;i<lastone;i++)); do

        flag=1

        s1=$i

        let s2=i+1

        if [ ${arr[$s1]} -gt ${arr[$s2]} ]; then

            tmp=${arr[$s1]}

            arr[$s1]=${arr[$s2]}

            arr[$s2]=$tmp

            flag=0

        fi

      done

      let lastone--

      if [ $flag -eq 1 ]; then 

        break; #终止循环,排序结束

      fi

done

echo ${arr[@]} #输出排序后的数组

echo "END"

最后

以上就是平常猫咪为你收集整理的Shell小技巧(六十三)冒泡排序的全部内容,希望文章能够帮你解决Shell小技巧(六十三)冒泡排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部