DAY4,C高级(shell中的函数,循环,排序思想)

1.整理思维导图;

2.写一个函数,获取用户的uid和gid并使用变量接收;

  1 #!/bin/bash                                                                                     
  2 function get_id()
  3 {
  4     read -p "输入用户:" user
  5     uid=`id -u $user`
  6     echo "uid=$uid"
  7     gid=`id -g $user`
  8     echo "gid=$gid"
  9 }
 10 
 11 var=`get_id`
 12 echo -e "无返回值方式接收:\n$var"

DAY4,C高级(shell中的函数,循环,排序思想)_第1张图片

3.整理冒泡排序、选择排序和快速排序的代码;

冒泡排序:
  1 #!/bin/bash
  2 arr=($*)
  3 len=$#                                                                                        
  4 for i in `seq $((len-1))`
  5 do
  6     count=0
  7     for j in `seq 0 1 $((len-1-i))`
  8     do
  9         if [ ${arr[j]} -gt ${arr[j+1]} ]
 10         then
 11             temp=${arr[j]}
 12             arr[j]=${arr[j+1]}
 13             arr[j+1]=$temp
 14             ((count++))
 15         fi
 16     done
 17     if [ $count -eq 0 ]
 18     then
 19         break 1
 20     fi
 21 done
 22 echo "冒泡升序排序:${arr[*]}"

选择排序:
  1 #!/bin/bash                                                                                     
  2 arr=($*)
  3 len=$#
  4 for i in `seq 0 1 $((len-1))`
  5 do
  6     min=$i   #默认最小值下标
  7     for ((j=i+1; j

快速排序:
#!/bin/bash

arr=($*)
len=($#)

function quick_onesort()   #一轮排序
{
	local low=$1
	local high=$2
	local mark=${arr[low]}

	while test $low -lt $high
	do
		while test $low -lt $high && test $mark -le ${arr[high]}
		do
			((high--))
		done
		arr[low]=${arr[high]}

		while test $low -lt $high && test $mark -ge ${arr[low]}
		do
			((low++))
		done
		arr[high]=${arr[low]}

	done
	
	arr[low]=$mark
	return $low
}

function quick_sort()   #递归方式排序
{
	local low=$1
	local high=$2
	local mid=0
	
	if [[ $low -lt $high ]]
	then
		quick_onesort $low $high
		mid=$?                                     #接返回值
		quick_sort $low $((mid-1))
		quick_sort $((mid+1)) $high
	fi
}

quick_sort 0 $((len-1))

echo "快速排序:${arr[*]}"

你可能感兴趣的:(c高级,排序算法,shell,c语言)