欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell脚本的冒泡排序法(排列数组由小到大,有详细解释)

程序员文章站 2024-02-20 19:28:22
...
  • 冒泡排序,就是多次比较数组的俩个元素,然后进行排序
  • 原理分析:
arr=12 77 60 90 10)将数组有小到大排序
用冒泡排序法分析:
首先第一个数跟第二个数比较,小的放在前面输出,大的排到后面输出
然后在用大的跟后面一个数比较,同样小的在前输出,大的排后面
一次类推比较。
第一轮比完,此时最大的数是排在了最后面,比较出了一个数
然后第二轮比,排出第二个大的数在倒数第二位
以此类推,经过${#arr[@]}-1此比较,即可有小到大排出结果
第一轮比较:
第一次比较:arr[0]=12  < arr[1]=77 将小的赋值arr[0],大的赋值arr[1]中间要一个变量过度
结果:arr=12 77 60 90 10
第二次比较:arr[0]=77   >  arr[1]=60
结果:arr=12 60 77 90 10
....
第四次比较:arr[3]=90   >  arr[4]=10
结果:arr=12 60 77 10 90
第一轮比较将最大数90 排到了最后
第二轮比较:...
......以此类推
  • 示例:
#!/bin/bash
list=(90 20 10 70 80 99 77 55 95 76)  ##定义一个数组

for ((i=1;i<${#list[*]};i++));do   ##外层循环 每一轮
  
  for ((j=0;j<${#list[@]}-1;j++));do  ##内层循环 每一次
    
    if [ ${list[j]} -gt ${list[j+1]} ];then
      
      t=${list[j]}   ##变量暂时存放元素,实现元素交换
      
      list[j]=${list[j+1]}  ##将小的数放到前面
      
      list[j+1]=$t   ##大的元素放在后面,然后继续做比较
    
    fi
  done
done
echo "${list[*]}"  ##输出所有