Classificação estranha e uniforme é uma classificação mais personalizada. A idéia básica é organizar sequências ímpares em uma ordem, até sequências em uma ordem, depois sequências ímpares em outra e até sequências em uma ordem até que todas sejam ordenadas.
Vamos dar um exemplo,
Array para ser classificado
[6 2 4 1 5 9]
Na primeira vez comparando uma sequência ímpar, a sequência ímpar é comparada com seus vizinhos, mesmo sequência, como 6 e 2, 4 e 1, 5 e 9
[6 2 4 1 5 9]
Depois de trocar, torna -se
[2 6 1 4 5 9]
A segunda comparação de números pares é 6 e 1 e 5 e 5 são
[2 6 1 4 5 9]
Depois de trocar, torna -se
[2 1 6 4 5 9]
A terceira viagem é um número ímpar e os 2, 6 e 5 são selecionados para comparar com as colunas vizinhas, respectivamente.
[2 1 6 4 5 9]
Após a troca
[1 2 4 6 5 9]
A quarta série numerada uniforme
[1 2 4 6 5 9]
Uma troca
[1 2 4 5 6 9]
Implementação de Java:
estático vazio ímparevensort (int [] ary) {// Classifica de paridade sinalizador booleano = true; while (flag) {boolean ímpar = false, uniforme = false; para (int i = 0; i <ary.length - 1; i + = 2) {if (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]); ímpar = true; }} para (int i = 1; i <ary.length - 1; i + = 2) {if (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]); mesmo = verdadeiro; }} sinalizador = ímpar || até; // Se false, significa que, independentemente de a sequência ímpar ou mesmo o caso, não há comparação que atenda às condições}} A bandeira acima = ímpar || até; tem um verdadeiro, indicando que ainda está trocando. No final, a bandeira é falsa apenas se todos forem falsos.
Reescrevendo -o para sinalizador = ímpar && par; Se houver um falso, o loop geral não será mais concluído. Como a classificação de bolhas, pode reduzir o último loop interno.