1. Classificação de bolhas
Idéia do algoritmo: atravesse a matriz a ser classificada e compare dois elementos adjacentes a cada vez. Se a ordem do arranjo estiver errada, troque suas posições. Após uma viagem para classificar, o maior elemento flutuará até o final da matriz. Repita até que a classificação esteja completa.
Demonstração de amostra:
Implementação de algoritmo:
para (int i = 0; i <Array.Length-1; i ++) {// Classifique n-1 vezes no máximo para (int j = 0; j <Array.Length-i-1; J ++) {// o número de vezes que precisa ser trocado se (Array [J]> Array [J+1]) {int temp = Aray []; array [j] = array [j+1]; matriz [j+1] = temp; }}}Complexidade do tempo do algoritmo: o (n2) O loop externo precisa ser comparado N-1 vezes, e o loop interno precisa ser comparado n vezes.
2. Selecione a classificação
Idéia do algoritmo: selecione o menor elemento da matriz a ser classificado e trocá -lo com o elemento na primeira posição da matriz. Em seguida, selecione um elemento menor dos elementos restantes e troque -o com o elemento na segunda posição. Se o menor elemento for o elemento nessa posição, troque -o por si mesmo, e assim por diante até que a classificação esteja completa.
Demonstração de amostra:
Implementação de algoritmo:
for (int i = 0; i <array.length; i ++) {int min = i; for (int j = i+1; j <array.length; j ++) {if (array [j] <array [min]) {min = j; }} int temp = array [min]; matriz [min] = matriz [i]; Array [i] = temp; } Complexidade do tempo: o (n2) requer comparações n2/2 e n trocas n
3. Insira a classificação
Idéia do algoritmo: inicie a percorrendo o segundo elemento da matriz, compare o elemento com o elemento anterior, se o elemento for menor que o elemento anterior, salve o elemento em uma variável temporária, mova o elemento anterior para trás por sua vez e insira o elemento em uma posição adequada. Após a conclusão de cada classificação, os elementos no lado esquerdo do índice devem ser ordenados, mas ainda podem ser movidos. Para matrizes com menos inversões, mais eficiente o algoritmo é.
Nota: Invertido: 5 3 6 2 O termo invertido é 5-3 5-2 3-2 6-2
Demonstração de amostra:
Implementação de algoritmo:
para (int i = 1; i <Array.Length; i ++) {for (int j = i; j> 0 && Array [j] <Array [J-1]; J-) {int Temp = Array [j]; Array [j] = Array [J-1]; Array [J-1] = temp; }}Complexidade do tempo: o (n2) Pior caso N2/2 Comparação, N2/2 Exchange Best Case N-1 Comparação, 0 trocas
Os três algoritmos de classificação simples acima (implementados usando Java) são todo o conteúdo que eu compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.