bash 函数思想实现数组冒泡排序

  

复制代码
 1 #!/bin/env sh
 2 
 3 read -p 'input length of array:' var
 4 [[ ! $var =~ [[:digit:]] ]] && echo 'input wrong' && exit 5
 5 
 6 declare -a pp
 7 
 8 for z in `seq 0 1 $[var-1]`;do
 9     pp[$z]=$RANDOM
10 done
11 
12 echo ${pp[@]}
13 
14 function desc(){
15     local pp
16     declare -a pp
17     pp=($@)
18     local num=${#pp[*]}
19     echo $num
20     for ((i=0;i<num;i++));do
21         for ((j=i+1;j<num;j++));do
22             if [ ${pp[i]} -lt ${pp[j]} ];then
23                 nn=${pp[i]}
24                 pp[i]=${pp[j]}
25                 pp[j]=$nn
26             fi
27         done
28     done
29     echo "desc sort:"
30     echo ${pp[*]}
31 }
32 
33 desc ${pp[*]}
34 
35 function asc(){
36     local pp
37     declare -a pp
38     pp=($*)
39     local num=${#pp[*]}
40     echo $num
41     for ((i=0;i<num;i++));do
42         for ((j=i+1;j<num;j++));do
43             if [ ${pp[i]} -gt ${pp[j]} ];then
44                 nn=${pp[i]}
45                 pp[i]=${pp[j]}
46                 pp[j]=$nn
47             fi
48         done
49     done
50 
51     echo "asc scort:"
52     echo ${pp[@]}
53 }
54 
55 asc ${pp[*]}
复制代码

bash 中不能直接传递数组,只能先拆包在重新生成数组

开始先利用[[ ]]做正则条件判断,非数字退出

posted @   ascertain  阅读(162)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示