Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ARR=()
- function read_array()
- {
- for i in $(seq 1 $#)
- do
- ARR[$i]=$1
- shift
- done
- }
- function print_array()
- {
- interval=$1
- shift
- __k=$1
- shift
- __l=$1
- shift
- echo -en '\r'
- for __i in $(seq 1 $1)
- do
- if [ "$__i" -eq "$__k" ]
- then
- echo -en '\033[1;33m'
- fi
- if [ "$__i" -eq "$__l" ]
- then
- echo -en '\033[1;31m'
- fi
- echo -n "${ARR[$__i]} "
- if [ "$__i" -eq "$__k" -o "$__i" -eq "$__l" ]
- then
- echo -en '\033[0m'
- fi
- done
- sleep $interval
- }
- function swap()
- {
- TMP=${ARR[$1]}
- ARR[$1]=${ARR[$2]}
- ARR[$2]=$TMP
- }
- function bubble_sort()
- {
- for i in $(seq 1 $#)
- do
- for j in $(seq $# -1 $(($i + 1)))
- do
- print_array 1 $(($j - 1)) $j $#
- if [ "${ARR[$(($j - 1))]}" -gt "${ARR[$j]}" ]
- then
- swap $((j - 1)) $j
- print_array 1 $j $(($j - 1)) $#
- fi
- done
- done
- }
- function insertion_sort()
- {
- for i in $(seq 2 $#)
- do
- for j in $(seq $i -1 2)
- do
- print_array 1 $(($j - 1)) $j $#
- if [ "${ARR[$(($j - 1))]}" -le "${ARR[$j]}" ]
- then
- break
- fi
- swap $j $(($j - 1))
- print_array 1 $j $(($j - 1)) $#
- done
- done
- }
- function selection_sort()
- {
- for p in $(seq 1 $#)
- do
- m=$p
- for i in $(seq $(($p + 1)) $#)
- do
- print_array 1 $m $i $#
- if [ "${ARR[$m]}" -gt "${ARR[$i]}" ]
- then
- m=$i
- fi
- done
- if [ "$m" -ne "$p" ]
- then
- swap $m $p
- print_array 1 $p 0 $#
- fi
- done
- }
- function shell_sort()
- {
- d=$#
- while [ "$d" -gt "1" ]
- do
- d=$(($d / 2))
- flag=0
- while [ "$flag" -eq "0" ]
- do
- flag=1
- for j in $(seq 1 $(($# - $d)))
- do
- i=$(($j + $d))
- print_array 1 $i $j $#
- if [ "${ARR[$j]}" -gt "${ARR[$i]}" ]
- then
- swap $j $i
- print_array 1 $j $i $#
- flag=0
- fi
- done
- done
- done
- }
- function gnome_sort()
- {
- i=2
- while [ "$i" -le "$#" ]
- do
- print_array 1 $(($i - 1)) $i $#
- if [ "${ARR[$(($i - 1))]}" -le "${ARR[$i]}" ]
- then
- i=$(($i + 1))
- else
- swap $(($i - 1)) $i
- print_array 1 $i $(($i - 1)) $#
- if [ "$i" -gt "2" ]
- then
- i=$(($i - 1))
- else
- i=$(($i + 1))
- fi
- fi
- done
- }
- function main()
- {
- SORT=$1
- shift
- read_array $@
- case $SORT in
- bubble)
- bubble_sort $@;;
- insertion)
- insertion_sort $@;;
- selection)
- selection_sort $@;;
- shell)
- shell_sort $@;;
- gnome)
- gnome_sort $@;;
- *)
- echo -e "Sort visualizations\nUsage: \033[1m$0\033[0m [ \033[1;32mbubble\033[0m | \033[1;32minsertion\033[0m | \033[1;32mselection\033[0m | \033[1;32mshell\033[0m | \033[1;32mgnome\033[0m ] \033[36mARRAY\033[0m"
- exit;;
- esac
- print_array 0 0 0 $#
- echo
- }
- main $@
Advertisement
Add Comment
Please, Sign In to add comment