Algoritmo de clasificación (clasificación de burbujas, clasificación directa, clasificación inversa)

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.
Inserte la descripción de la imagen aquí

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[*]}"

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

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
Inserte la descripción de la imagen aquí

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[*]}"

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

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[*]}"

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_51613313/article/details/111646718
Recomendado
Clasificación