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;
}
}