Selecione o conceito de classificação
A classificação de seleção também é um algoritmo de classificação de troca, que tem uma certa semelhança com a classificação da bolha. Portanto, eu, pessoalmente, acredito que a seleção de classificação pode ser considerada um algoritmo aprimorado para classificação de bolhas. Sua ideia é a seguinte:
Suponha que o Array Arr [] agora seja classificado e possui n elementos.
1 Compare o primeiro elemento (em Java, o subscrito é 0) com o segundo elemento. Se o primeiro for maior que o último, não deve ser o menor, mas não corremos para trocar como classificação de bolhas. Podemos definir uma variável temporária A para armazenar o subscrito deste elemento atualmente menor. Em seguida, continuamos a comparar o menor elemento com o terceiro elemento. Se ainda não for o menor, modificamos o valor de a. Dessa maneira, até que a comparação com o último elemento seja concluída, é certo que um deve ser o subscrito do menor elemento.
2. Se o valor de A não for 0 (o valor inicial, ou seja, o subscrito do primeiro elemento), troque os dois elementos com os subscritos A e 0.
3. Repita o processo acima e inicie a comparação com o elemento com o subscrito 1 desta vez, porque o menor elemento foi colocado na posição com o subscrito 0.
4. Dessa forma, até que apenas o último elemento seja deixado, você pode ter certeza de que esse elemento é o maior.
5. A classificação é concluída.
Obviamente, esse algoritmo também requer rodadas de N-1 de classificação.
Deve -se notar que a explicação acima é apenas a maneira de encontrar o valor mínimo a cada vez. De fato, você também pode encontrar o valor máximo sempre, mas precisa colocá -lo na cauda da matriz toda vez.
Código de implementação de Java:
SelectArray.java
pacote ch02; classe pública selectArray {// Array Private Long [] arr; // Tamanho dos dados válidos no Array Private Int elems; // Construtor padrão public selectArray () {arr = new Long [50]; } public SelectArray (int max) {arr = new Long [max]; } // Insira dados public void insert (valor longo) {arr [elems] = value; elems ++; } // Exibir dados public void Display () {for (int i = 0; i <elems; i ++) {System.out.print (arr [i]+""); } System.out.println (); } // Selecione classificar public void selectSort () {int min = 0; tmp longo = 0l; for (int i = 0; i <elems -1; i ++) {min = i; for (int j = i+1; j <elems; j ++) {if (arr [j] <arr [min]) {min = j; }} tmp = arr [i]; arr [i] = arr [min]; arr [min] = tmp; }}}Código de teste:
pacote ch02; classe pública testelectRray {public static void main (string [] args) {selectArray Sarr = new SelectArray (); Sarr.insert (89); Sarr.insert (54); Sarr.insert (667); Sarr.insert (7); Sarr.insert (12); Sarr.insert (43); Sarr.insert (12); Sarr.Display (); Sarr.SelectSort (); Sarr.Display (); }} resultado: