#!/bin/bash# 冒泡排序算法测试 - CPU负载测试 # 兼容旧版本Bashbubble_sort() {local array_name=$1eval "local array=(\"\${${array_name}[@]}\")"local n=${#array[@]}for ((i = 0; i < n-1; i++)); dofor ((j = 0; j < n-i-1; j++)); doif [ ${array[j]} -gt ${array[j+1]} ]; then# 交换元素local temp=${array[j]}array[j]=${array[j+1]}array[j+1]=$tempfidonedone# 将排序后的数组赋值回原变量eval "${array_name}=(\"\${array[@]}\")" }# 生成随机数组 generate_random_array() {local size=$1local array=()for ((i=0; i<size; i++)); doarray[i]=$((RANDOM % 10000))done# 返回数组元素echo "${array[@]}" }# 主测试函数 run_test() {local array_size=${1:-1000} # 默认数组大小,降低以避免过长时间local iterations=${2:-5} # 默认迭代次数echo "=== Bash冒泡排序CPU负载测试 ==="echo "数组大小: $array_size"echo "迭代次数: $iterations"echo "开始时间: $(date)"echo "--------------------------------"local total_time=0for ((iter=1; iter<=iterations; iter++)); doecho -n "第 $iter 次迭代..."# 生成新数组local test_arraytest_array=($(generate_random_array $array_size))# 计时开始local start_time=$(date +%s)# 执行排序bubble_sort test_array# 计时结束local end_time=$(date +%s)local duration=$((end_time - start_time))echo " 完成 - 耗时: ${duration}秒"total_time=$((total_time + duration))# 小延迟,避免过热sleep 1doneecho "--------------------------------"echo "总耗时: ${total_time}秒"echo "平均耗时: $((total_time / iterations))秒"echo "结束时间: $(date)"echo "测试完成!" }# 极简版本 - 如果上述仍有问题 simple_bubble_test() {echo "=== 极简冒泡排序测试 ==="echo "开始时间: $(date)"# 创建一个小数组进行测试arr=(5 3 8 4 2 9 1 7 6)echo "原始数组: ${arr[@]}"# 冒泡排序n=${#arr[@]}for ((i = 0; i < n-1; i++)); dofor ((j = 0; j < n-i-1; j++)); doif [ ${arr[j]} -gt ${arr[j+1]} ]; thentemp=${arr[j]}arr[j]=${arr[j+1]}arr[j+1]=$tempfidonedoneecho "排序后数组: ${arr[@]}"echo "结束时间: $(date)" }# 检查Bash版本 check_bash_version() {local bash_version=${BASH_VERSION%%[^0-9.]*}echo "当前Bash版本: $bash_version"if [ $(echo "$bash_version >= 4.3" | bc -l 2>/dev/null) -eq 1 ]; thenecho "Bash版本支持高级特性"return 0elseecho "Bash版本较旧,使用兼容模式"return 1fi }# 显示使用信息 show_usage() {echo "用法: $0 [选项]"echo "选项:"echo " normal [大小] [次数] 正常测试模式"echo " simple 极简测试模式"echo " check 检查Bash版本"echo " help 显示此帮助"echo ""echo "示例:"echo " $0 normal 500 3 # 500元素, 3次迭代"echo " $0 simple # 极简测试" }# 主程序 main() {case "$1" in"normal")if check_bash_version; thenrun_test "$2" "$3"else# 如果版本检查失败,使用更保守的参数run_test "${2:-500}" "${3:-3}"fi;;"simple")simple_bubble_test;;"check")check_bash_version;;"help"|"-h"|"--help")show_usage;;*)echo "使用默认参数运行测试..."if check_bash_version; thenrun_testelserun_test 500 3fi;;esac }# 运行主程序 main "$@"

