Clasificación de burbujas (super detallada)

I. Introducción

Los tipos con los que estamos familiarizados son actualmente populares en los siguientes tipos: clasificación de burbujas, clasificación de selección, clasificación de inserción, clasificación de colina, clasificación de fusión, clasificación rápida, clasificación de cubeta, clasificación topológica ...
Parece que una por una es alta , y algunas personas pueden ser únicas. Los últimos tipos son un poco confusos, es decir, no sé cuál es el principio de implementación específico. Para implementar el conocimiento en el cerebro, estudiaremos en grupos.

Así que esta vez aprendamos el primer tipo de clasificación ordinaria, clasificación de burbujas. La
próxima vez grabaré las siguientes clasificaciones una por una. No
más tonterías, ¡ comencemos !

Dos, tipo burbuja

Creo que todo el mundo está familiarizado con la clasificación de burbujas . Si aún no lo sabe, siga este artículo para aprenderlo lentamente. La perseverancia siempre tendrá éxito. Si lo entiendes una vez, léelo unas cuantas veces y lo entenderás.

Principio de implementación: Cada vez que el elemento atravesado se compara con todos los elementos detrás de él, si cumple con nuestras reglas de comparación, la posición del elemento se intercambiará hasta el final del recorrido de todos los elementos, y el objetivo es mencionar el más pequeño. elemento que se atraviesa cada vez
Matriz que se clasifica al frente : 4 3 5 1 0 2 Una vez
completada la clasificación: 0 1 2 3 4 5

Nota: Hay muchos resultados de clasificación, según sus necesidades. Solo estoy ordenando la matriz de pequeña a grande como ejemplo. La matriz comienza desde el subíndice 0.
Echemos un vistazo a
la primera selección de elementos en el diagrama de flujo : (Posición índice: 0, valor: 4)
②Comience a recorrer todos los elementos después del "índice 0 ", en este momento, recorra el elemento 3 y compare con 4 con índice 0.
Inserte la descripción de la imagen aquí
La comparación encontró que: 3 es menor que 4 en el índice 0, intercambiar posiciones, los cambios de la matriz son los siguientes
Inserte la descripción de la imagen aquí
②Continuar atravesando los elementos después del índice 0 , en este momento, atravesar el elemento 5 y comparar con 3 en el índice 0. Inserte la descripción de la imagen aquí
La comparación encontró que: 5 es mayor que 3 en el índice 0. En este momento, la posición del elemento no se intercambia, por lo que la posición del elemento sigue siendo la siguiente.
Inserte la descripción de la imagen aquí
③Continuar atravesando los elementos después del índice 0. En este momento, atravesar al elemento 1 y 3 en el índice 0. Compare.
Inserte la descripción de la imagen aquí
La comparación encuentra que: 1 es menor que 3 en el índice 0. Posiciones de intercambio. En este momento, la posición del elemento es la siguiente
Inserte la descripción de la imagen aquí
④ Continuar atravesando los elementos después del índice 0. En este momento, atravesar el elemento 0 y comparar con 1 en el índice 0.
Inserte la descripción de la imagen aquí
La comparación encuentra que: 0 es menor que 1 en el índice 0. Posiciones de intercambio. En este momento, la posición del elemento es la siguiente.
Inserte la descripción de la imagen aquí
⑤Continuar atravesando los elementos después del índice 0. En este momento, atravesar el elemento 2 y comparar con 0 en índice 0.
Inserte la descripción de la imagen aquí
La comparación encontró que: 2 es mayor que 0 en el índice 0. En este momento, la posición no se intercambia, por lo que la posición del elemento sigue siendo la siguiente.
Inserte la descripción de la imagen aquí
Por lo tanto, la primera ronda del bucle se ha recorrido aquí. Encontramos que la primera posición de la matriz (es decir, el elemento en el índice 0) ya es el más pequeño en toda la matriz. Ahora nuestro próximo ciclo debe bloquear la posición en el índice 1, atravesar todos los elementos detrás del índice 1 y encontrar el segundo elemento de la matriz toda la matriz.
Aquí ya no publicaré el diagrama de flujo (el diagrama de flujo es realmente agotador)
Si aún no sabe cómo completar la clasificación burbujeante, le sugiero que lea más libros de texto y luego comprenda y dibuje lentamente por sí mismo. Esto se puede dominar pronto. A continuación, publicaré una versión java del código de clasificación burbujeante.

import java.util.Arrays;

@SuppressWarnings("all")
public class SortClass {
    
    

    // 冒泡排序
    public static void bubbleSort(Comparable[] a){
    
    
        int len = a.length;
        for(int i=0;i<len;++i)
            for(int j=i+1;j<len;++j)
                if(greater(a[i],a[j]))
                    swap(a,i,j);
    }
	// 比较待排序数组里面两个元素的大小
	// 如果 a>b .则返回true,否则返回false
    public static boolean greater(Comparable a , Comparable b){
    
    
        return a.compareTo(b)>0;
    }
	
	// 交换a数组里面索引 i 和索引 j 里面的值
    public static void swap(Comparable[] a,int i,int j){
    
    
        Comparable mid;
        mid = a[i];
        a[i] = a[j];
        a[j] = mid;
    }

    public static void main(String[] args) {
    
    
        // 测试冒泡排序
        // Integer 是 int 的封装类
        Integer[] a = {
    
    2,4,1,5,8,10,0,3,6};
        SortClass.bubbleSort(a);
        for(int c : a){
    
    
            System.out.print(c+" ");
        }
        System.out.println();
    }
}

El resultado de la matriz es la siguiente
Inserte la descripción de la imagen aquí
clasificación de burbujas en lenguaje c

// c语言版的冒泡排序,n 是数组 a 的长度
    void bubble(int& a[],int n){
    
    
        for(int i=0;i<n;++i)
            for(int j=i+1;j<n;++j)
                if(a[j]<a[i])
                    swap(a[i],a[j]);
    }

Clasificación de burbujas en lenguaje c ++

// c++语言版的冒泡排序,v 是动态数组
    void bubble(vector<int> &v){
    
    
        int n = v.size();
        for(int i=0;i<n;++i)
            for(int j=i+1;j<n;++j)
                if(v[j]<v[i])
                    swap(v[i],v[j]);
    }

Supongo que te gusta

Origin blog.csdn.net/YSJ367635984/article/details/113682160
Recomendado
Clasificación