Algoritmo de clasificación
Uno, tipo burbuja
Similar al aumento de las burbujas, los datos continuarán avanzando en la matriz de pequeños a grandes o de grandes a pequeños.
1.1 Idea básica
La idea básica de la clasificación de burbujas es comparar los valores de dos elementos adyacentes, intercambiar los valores del elemento si se cumplen las condiciones, mover el elemento más pequeño al frente de la matriz y mover el elemento más grande a la parte posterior de la matriz (es decir, el intercambio de dos elementos Posición) de modo que el elemento más pequeño se eleve de abajo hacia arriba como una burbuja.
1.2 Ideas de algoritmos
El algoritmo de burbujeo se implementa mediante un bucle de doble capa, donde el bucle exterior se usa para controlar el número de rondas de clasificación, generalmente la longitud de la matriz a ordenar menos 1 vez, porque solo queda un elemento de la matriz en el último bucle, no se necesita comparación y la matriz se ha ordenado Arriba. El bucle interno se usa principalmente para comparar el tamaño de cada elemento adyacente en la matriz para determinar si se intercambian posiciones. El número de comparaciones e intercambios disminuye con el número de rondas de clasificación.
1.3 Ejemplo
arr=(54 3 1233 -4 135 31 1)
echo "原数组为:${arr[*]}"
length=${#arr[*]}
for ((a=1;a<$length;a++))
do
for ((b=0;b<$length-a;b++))
do
if [ ${arr[$b]} -gt ${arr[$[$b+1]]} ]
then
temp=${arr[$b]}
arr[$b]=${arr[$[$b+1]]}
arr[$[$b+1]]=$temp
fi
done
done
echo "新数组为:${arr[*]}"
En segundo lugar, seleccione y ordene directamente
En comparación con la clasificación por burbujas, la clasificación por selección directa tiene menos intercambios, por lo que es más rápida
2.1 Idea básica
Compare la posición de clasificación especificada con otros elementos de la matriz. Si se cumple la condición, el valor del elemento se intercambiará. Tenga en cuenta que la diferencia es la clasificación de burbujas. En lugar de intercambiar elementos adyacentes, el elemento que cumple la condición se intercambia con la posición de clasificación especificada (como desde el último Los elementos comienzan a ordenarse), de modo que la posición ordenada se expande gradualmente y, finalmente, toda la matriz se convierte en el formato ordenado.
2.2 Ejemplo
arr=(25 31 2 45 123 312 4)
echo "原数组为:${arr[*]}"
length=${#arr[*]}
for ((a=1;a<$length;a++))
do
index=0
for ((b=1;b<=$length-a;b++))
do
if [ ${arr[$b]} -gt ${arr[$index]} ];then
index=$b
fi
done
temp=${arr[$length-$a]}
arr[$length-$a]=${arr[$index]}
arr[$index]=$temp
done
echo "新数组为:${arr[*]}"
Tres, orden inverso
Reordenar el contenido de la matriz original en orden inverso
3.1 Idea básica
Reemplace el último elemento de la matriz con el primer elemento. El penúltimo elemento se reemplaza con el segundo elemento, y así sucesivamente, hasta que todos los elementos de la matriz se invierten y reemplazan
3.2 Ejemplo
arr=(10 20 30 40 50 60)
echo "原数组为:${arr[*]}"
length=${#arr[*]}
for ((a=0; a<$length/2; a++))
do
temp=${arr[$a]}
arr[$a]=${arr[$lenqth-$a-1]}
arr[$length-$a-1]=$temp
done
echo "新数组为:${arr[*]}"