Estrutura de dados Java e classificação de bolha de análise de algoritmo


Aviso de direitos autorais

  • Autor do artigo original: irmão mais novo de Columbia Valley
  • Endereço do blog do autor: http://blog.csdn.net/lfdfhl

Análise de princípio

Há uma matriz não ordenada {1,9,7,5,3}, use a classificação por bolha para classificar a matriz de pequeno a grande (grande a pequeno).

A primeira viagem: um total de cinco números, comparados 4 vezes, o processo é o seguinte:
1 e 9, 9 é maior e a posição não é alterada, então ainda é 1,9,7,5,3
9 e 7, 9 é maior e precisa ser mudada Posição, 9 e 7 swap 1,7,9,5,3 Relação
9 e 5, 9 é maior, precisa mudar de posição, 9 e 5 swap 1,7,5,9,3
9 e 3 relação, 9 é maior, precisa mudar Posição, 9 e 3 swap 1,7,5,3,9

Segunda rodada: 1,7,5,3,9 comparada 3 vezes, o processo é o seguinte:
1 e 7, 7 é maior, não há necessidade de mudar de posição, então ainda é 1,7,5,3,9
proporção 7 e 5, 7 é grande, precisa mudar de posição, então se torna 1,5,7,3,9
7 é maior que 3, 7 é grande, precisa mudar de posição, então se torna 1,5,3,7,9

A terceira rodada: 1,5,3,7,9 comparada 2 vezes, o processo é o seguinte:
proporção 1 e 5, 5 é maior, não há necessidade de mudar de posição, então ainda é 1,5,3,7,9
proporção 5 e 3, 5 grande, precisa mudar de posição, torna-se 1,3,5,7,9

Quarta rodada: 1,3,5,7,9 comparado 1 vez, o processo é o seguinte:
1 é comparado com 3, 3 é maior, não há necessidade de mudar de posição, então ainda é 1,3,5,7,9

resumo:

  • 1. 5 números na matriz, comparados 5-1 = 4 vezes
  • 2. Quantas vezes você comparou cada viagem? O número de passagens + o número de vezes comparadas nesta passagem = o número de elementos na matriz
  • 3. Compare cada vez, compare um valor máximo e coloque-o no final
  • 4. Em cada comparação, dois números são comparados aos pares, e as posições podem precisar ser invertidas

Código

O código para classificação por bolha é implementado da seguinte maneira:

package com.algorithm;
/**
 * 本文作者:谷哥的小弟 
 * 博客地址:http://blog.csdn.net/lfdfhl
 */
public class BubbleSort {
    
    

	public static void main(String[] args) {
    
    
		int[] intArray = {
    
    11, 99, 77, 5, 0, -1};
		printArray(intArray);
		System.out.println();
		bubble(intArray);
	}

	public static void bubble(int[] intArray) {
    
    
		for (int i = 0; i < intArray.length - 1; i++) {
    
    
			for (int j = 0; j < intArray.length - 1 - i; j++) {
    
    
				if (intArray[j] > intArray[j + 1]) {
    
    
					swap(intArray, j, j + 1);
				}
			}
		}
		printArray(intArray);
	}
	
	//打印数组
	public static void printArray(int[] intArray) {
    
    
		for (int i = 0; i < intArray.length; i++) {
    
    
			System.out.print(intArray[i] + " ");
		}
	}
	
	//交换数组中的元素
	public static void swap(int[] intArray, int i, int j) {
    
    
		int temp = 0;
		temp = intArray[i];
		intArray[i] = intArray[j];
		intArray[j] = temp;
	}

}

resultado da operação

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/lfdfhl/article/details/109320033
Recomendado
Clasificación