Tipo de bolha
Bolhas, quando vi esse algoritmo, lembrei -me do ditado "os decimais flutuam e os grandes números afundam". Através da comparação de camadas por camada, os decimais flutuam para a superfície e os grandes números "afundam as pedras no fundo da água". Isso alcança o efeito da classificação. A classificação de bolhas é um algoritmo de classificação simples. Ele visita repetidamente a sequência a ser classificada, compara dois elementos por vez e os troca se estiverem incorretos. O trabalho de visitar a sequência é repetido até que nenhuma troca seja necessária, ou seja, a sequência foi classificada. A origem desse algoritmo é porque quanto menor o elemento "flutua" lentamente para o topo da sequência via troca.
A operação do algoritmo de classificação de bolhas é a seguinte:
1. Compare elementos adjacentes. Se o primeiro for maior que o segundo, troque -os pelos dois.
2. Faça o mesmo trabalho para cada par de elementos adjacentes, começando do primeiro par até o último par no final. Neste ponto, o último elemento deve ser o maior número.
3. Repita as etapas acima para todos os elementos, exceto o último.
4. Continue repetindo as etapas acima para cada vez menos elementos a cada vez, até que não haja pares de números que precisam ser comparados.
Diagrama do processo de classificação de bolhas:
Código de exemplo
public class Bubblesort {public static int [] bubblesort (int [] array) {for (int i = 0; i <Array.Length; i ++) {for (int j = 0; j <Array.Length-i-1; J ++) {if (Array [J]> array [j+1]) {int tex = [J]; array [j] = array [j+1]; matriz [j+1] = temp; }} System.out.println ("Th"+(i+1)+"classificação"); for (int k = 0; k <array.length; k ++) {System.out.print (Array [k]+""); } System.out.println (); } retornar a matriz; } / ** * @param args * / public static void main (string [] args) {int [] array = {7,3,9,5,6,8,1}; Bubblesort (matriz); }}Resultado de impressão:
1ª ordem 3 7 5 6 8 1 9 Sorting 2nd Ordem 3 5 6 7 1 8 9Sorting 3 5 6 1 7 8 9 Sorting 4ª Ordem 3 5 1 6 7 8 9Sorting 5º Ordem 3 1 5 6 7 8 9Sorting 6th Order 1 3 5 6 8 9Sorting 7 3. 1 3 5 5 6 7 8 9º 7º Ordem 1 3 5 6 7 8 9º 5º Ordem 3 5 6 7 8 9ª Ordem 1 Ordem 1 3 5 6 7 8 9Sorting 7th Order 1 3 5 6 7 8 9Sorting 7th Order 1 3 5 6 7 8 9 8th Order 3 6 7 8 9Sorting 5 8 6 8 8 8 9 8th Order 3 5 8 8 9Sorting 5 8 6 8 8 8 9 8. 9 Sorting 5ª Ordem 3 5 6 7 8 9Sorting 5ª Ordem 3 5 6 7 8 9ª 5ª Ordem 3 5 6 7 8 9 9ª Ordem 3 5 5 6 7 8 9ª 5ª Ordem 3 5ª Ordem 5ª Ordem 5ª Ordem 5ª 5ª Ordem 5ª Ordem 5ª 5ª Ordem 5ª 5ª Ordem 5ª 5ª Ordem 5ª 5ª Ordem 5ª 5ª ordem 5 5ª 5ª ordem 5 5ª ordem 5 5ª 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5 5ª ordem 5ª 5ª ordem
Pesquisa binária
Depois de classificar o pedido, também precisamos encontrar os dados que queremos. A pesquisa dicotômica é um algoritmo básico comumente usado, tempo e básico. A pesquisa binária é pesquisar e comparar a posição intermediária dos dados classificados, semelhante ao par do meio do palito de madeira, por isso também é chamado de dobragem e meio-encontro. É um método de pesquisa mais eficiente.
[Requisitos de pesquisa binária]: 1. A estrutura de armazenamento seqüencial deve ser adotada. 2. A chave deve ser organizada de maneira ordenada de acordo com o tamanho da palavra -chave.
[Prós e desvantagens] As vantagens do método de pesquisa semi-acabamento são que ele tem menos tempos de comparação, velocidade rápida da pesquisa e bom desempenho médio; Sua desvantagem é que a tabela a ser procurada é uma tabela ordenada e é difícil de inserir e excluir. Portanto, o método de meia-encontro é adequado para listas ordenadas que não são frequentemente alteradas e são frequentemente encontradas.
[Algoritmo pensado] Primeiro, compare as palavras -chave registradas na posição intermediária da tabela com as palavras -chave de pesquisa. Se os dois forem iguais, a pesquisa será bem -sucedida; Caso contrário, a tabela será dividida em dois sub-tábulos com o registro de posição intermediário. Se as palavras-chave registradas na posição intermediária forem maiores que a palavra-chave de pesquisa, pesquise mais a sub-tabela anterior, caso contrário, pesquise a próxima sub-tabela.
Repita o processo acima até que o registro que atenda às condições seja encontrado para que a pesquisa seja bem -sucedida ou até que a tabela infantil não exista, a pesquisa não é bem -sucedida no momento.
[Complexidade do algoritmo] Assumindo que o comprimento da matriz seja n, sua complexidade do algoritmo é o(log(n)), a pior complexidade do tempo é O(n)。
Código de exemplo
pacote com.somnus.array;/** * Método de pesquisa binária * @Author CompAq * */public class BinarySearch {public static int binarySearch (int [] matriz, int value) {int low = 0; int alto = array.length-1; int meio = 0; while (baixo <= alto) {middle = (baixo+alto)/2; // 0 6 4 6 6 6 para (int i = 0; i <array.length; i ++) {System.out.print (array [i]+""); if (i == meio) // 3 5 6 Imprima o delimitador imediatamente após o ponto médio {System.out.print ("##"); }} System.out.println (); if (matriz [meio] == valor) {return middle; } if (valor <array [middle]) {High = Middle - 1; } if (Valor> Array [Middle]) {Low = Middle + 1; }} retornar -1; } / ** * @param args * / public static void main (string [] args) {int [] array = {7,3,9,5,6,8,1}; int [] array1 = bubblesort.bubblesort (matriz); int index = binarySearch (Array1,1); System.out.println ("Local:"+Index); }}Resultado de impressão:
1ª ordem 3 7 5 6 8 1 9 Sorting 2nd Ordem 3 5 6 7 1 8 9Sorting 3 5 6 1 7 8 9 Sorting 4ª Ordem 3 5 1 6 7 8 9Sorting 5º Ordem 3 1 5 6 7 8 91 91 5 6ª Ordem 1 3 5 6 8 9 9th Order 1 3 6 7 8 91 3 6 # 7 7 7 7 8 8 8 8.
Análise e Resumo
Nos algoritmos de pesquisa, a dicotomia é a mais rápida, mas deve ser uma sequência ordenada. Estes são os fundamentos dos algoritmos, e ainda precisamos nos esforçar muito para experimentar, resumir, absorver e manter o aprendizado de algoritmos.