Introduzione all'ordinamento per selezione in Java

Selezione ordinamento in Java è un metodo di ordinamento che trova continuamente l'elemento più piccolo nella parte non ordinata e lo mantiene all'inizio (per l'ordinamento in ordine crescente). Il processo verrà ripetuto fino a quando l'array di input non verrà ordinato. Inoltre, in Selezione ordinamento, divideremo l'array di input in due sottoarray in cui un array viene utilizzato per gli elementi ordinati e l'altro per gli elementi non ordinati. All'inizio, non ci saranno elementi nel sottoarray ordinato. Vediamo il funzionamento dell'ordinamento di selezione in dettaglio nella sezione seguente.

Come funziona l'ordinamento per selezione in Java

L'ordinamento della selezione funziona in modo semplice in cui mantiene due subarray dall'array di input. Loro sono:

  • Sottoarray ordinato per mantenere gli elementi ordinati
  • Subarray non ordinato per mantenere gli elementi non ordinati.

Algoritmo:

Di seguito è riportato l'algoritmo utilizzato per l'ordinamento Selezione

  1. Impostare il puntatore minimo (MIN) sulla posizione 0.
  2. Trova l'elemento più piccolo dall'elenco di elementi nell'array
  • Scambia l'elemento minimo con la posizione 0
  1. Spostare il puntatore MIN nella posizione successiva
  2. Ripetere il processo fino a quando l'array di input non viene ordinato.

Cerchiamo di capire il tipo di selezione con un esempio. Di seguito è riportato l'array di input che deve essere ordinato. Gli elementi in grassetto blu faranno parte dell'array ordinato.

Passaggio 1 : impostare il puntatore MIN sulla prima posizione. Quindi, il puntatore MIN punta a 15.

Più piccolo: = 15

Passaggio 2 : trova l'elemento più piccolo confrontandolo con il resto degli elementi. Confrontando 15 e 21, 15 è il più piccolo. Quindi, il più piccolo non cambierà in questo caso.

Più piccolo: = 15

Confrontando 15 e 6, 6 è il più piccolo.

Più piccolo: = 6

Confrontando 6 e 3, 3 è il più piccolo.

Più piccolo: = 3

3 sarà più piccolo anche in questo caso, poiché 19 è maggiore di 3.

Più piccolo: = 3

Più piccolo: = 3

Infine, in questa iterazione, 3 risulta essere il più piccolo.

Passaggio 3 : scambiare l'elemento più piccolo con l'elemento nella posizione 0.

Passaggio 4: incrementare il puntatore MIN alla posizione successiva.

Passaggio 5: trova l'elemento più piccolo successivo confrontandolo con il resto degli elementi.

Più piccolo: = 21

Più piccolo: = 6

Più piccolo: = 6

Più piccolo: = 6

Più piccolo: = 6

Passaggio 6: scambiare l'elemento più piccolo con l'elemento nella posizione 1.

Ripetere il processo fino a quando non viene formata una matrice ordinata come mostrato di seguito.

Esempi per implementare l'ordinamento della selezione in Java

Come già accennato in precedenza, l'ordinamento della selezione si basa sulla ricerca del minimo e sullo scambio. Ora, vediamo come implementare l'ordinamento della selezione usando Java.

Programma Java per ordinare gli elementi in un array usando Selezione ordinamento

import java.util.*;
public class SelSortExample (
//Method that implements Selectionsort
public static void selsort(int() arr)
(
int n=arr.length; //length of the array
for(int i=0;i (
int MIN=i; //set the first position as minimum
System.out.println("Sorting based on Number "+(i+1));
//Find the smallest element by comparing with the element in MIN position
for(int j=i+1;j (
System.out.println("Comparing "+ arr(MIN) + " and " + arr(j));
if(arr(j) (
System.out.println(arr(MIN) + " is greater than " + arr(j) );
MIN=j;
)
)
//Swap the smallest element with element in MIN position
int temp=arr(i);
arr(i)=arr(MIN);
arr(MIN)=temp;
)
)
public static void main(String() args) (
int() arr= (15, 21, 6, 3, 19, 20); // input array
System.out.println("Elements in the array before Sorting: "+ Arrays. toString (arr));
selsort (arr);//calling the selection sort method
System.out.println("Elements in the array after Sorting: "+Arrays. toString (arr));
)
)
import java.util.*;
public class SelSortExample (
//Method that implements Selectionsort
public static void selsort(int() arr)
(
int n=arr.length; //length of the array
for(int i=0;i (
int MIN=i; //set the first position as minimum
System.out.println("Sorting based on Number "+(i+1));
//Find the smallest element by comparing with the element in MIN position
for(int j=i+1;j (
System.out.println("Comparing "+ arr(MIN) + " and " + arr(j));
if(arr(j) (
System.out.println(arr(MIN) + " is greater than " + arr(j) );
MIN=j;
)
)
//Swap the smallest element with element in MIN position
int temp=arr(i);
arr(i)=arr(MIN);
arr(MIN)=temp;
)
)
public static void main(String() args) (
int() arr= (15, 21, 6, 3, 19, 20); // input array
System.out.println("Elements in the array before Sorting: "+ Arrays. toString (arr));
selsort (arr);//calling the selection sort method
System.out.println("Elements in the array after Sorting: "+Arrays. toString (arr));
)
)
import java.util.*;
public class SelSortExample (
//Method that implements Selectionsort
public static void selsort(int() arr)
(
int n=arr.length; //length of the array
for(int i=0;i (
int MIN=i; //set the first position as minimum
System.out.println("Sorting based on Number "+(i+1));
//Find the smallest element by comparing with the element in MIN position
for(int j=i+1;j (
System.out.println("Comparing "+ arr(MIN) + " and " + arr(j));
if(arr(j) (
System.out.println(arr(MIN) + " is greater than " + arr(j) );
MIN=j;
)
)
//Swap the smallest element with element in MIN position
int temp=arr(i);
arr(i)=arr(MIN);
arr(MIN)=temp;
)
)
public static void main(String() args) (
int() arr= (15, 21, 6, 3, 19, 20); // input array
System.out.println("Elements in the array before Sorting: "+ Arrays. toString (arr));
selsort (arr);//calling the selection sort method
System.out.println("Elements in the array after Sorting: "+Arrays. toString (arr));
)
)
import java.util.*;
public class SelSortExample (
//Method that implements Selectionsort
public static void selsort(int() arr)
(
int n=arr.length; //length of the array
for(int i=0;i (
int MIN=i; //set the first position as minimum
System.out.println("Sorting based on Number "+(i+1));
//Find the smallest element by comparing with the element in MIN position
for(int j=i+1;j (
System.out.println("Comparing "+ arr(MIN) + " and " + arr(j));
if(arr(j) (
System.out.println(arr(MIN) + " is greater than " + arr(j) );
MIN=j;
)
)
//Swap the smallest element with element in MIN position
int temp=arr(i);
arr(i)=arr(MIN);
arr(MIN)=temp;
)
)
public static void main(String() args) (
int() arr= (15, 21, 6, 3, 19, 20); // input array
System.out.println("Elements in the array before Sorting: "+ Arrays. toString (arr));
selsort (arr);//calling the selection sort method
System.out.println("Elements in the array after Sorting: "+Arrays. toString (arr));
)
)

Uscita campione:

Nel programma sopra, abbiamo due metodi principali e vendiamo il metodo di ordinamento. Il metodo principale chiama il metodo di ordinamento sell passando l'array di input come argomento. L'elemento minimo verrà identificato e scambiato con l'elemento puntato da MIN.

L'ordinamento di selezione può essere utilizzato anche quando l'array di input non è definito nel codice. Vediamo come funziona usando il seguente programma.

Programma Java per ordinare gli elementi usando Selezione ordinamento

import java.util.*;
public class SelectionSortExample
(
public static void main(String args())
(
int n, i, j, tempvar;
Scanner sc = new Scanner(System.in); //To take the input from user
System.out.print("Enter the size of array : \n");
n = sc.nextInt();
int array() = new int(n); //initialising the array
System.out.print("Enter the elements that need to be inserted in the array : \n");
//inserting the elements to the array
for(i=0; i (
array(i) = sc.nextInt();
)
System.out.print("array before Sorting: \n"+ Arrays.toString(array));
System.out.print("\nSorting begins here..\n");
for(i=0; i (
for(j=i+1; j (
if(array(i) > array(j))
(
tempvar = array(i);
array(i) = array(j);
array(j) = tempvar;
)
)
)
System.out.print("Array after Sorting is :\n");
for(i=0; i (
System.out.print(array(i)+ " ");
)
)
)
import java.util.*;
public class SelectionSortExample
(
public static void main(String args())
(
int n, i, j, tempvar;
Scanner sc = new Scanner(System.in); //To take the input from user
System.out.print("Enter the size of array : \n");
n = sc.nextInt();
int array() = new int(n); //initialising the array
System.out.print("Enter the elements that need to be inserted in the array : \n");
//inserting the elements to the array
for(i=0; i (
array(i) = sc.nextInt();
)
System.out.print("array before Sorting: \n"+ Arrays.toString(array));
System.out.print("\nSorting begins here..\n");
for(i=0; i (
for(j=i+1; j (
if(array(i) > array(j))
(
tempvar = array(i);
array(i) = array(j);
array(j) = tempvar;
)
)
)
System.out.print("Array after Sorting is :\n");
for(i=0; i (
System.out.print(array(i)+ " ");
)
)
)
import java.util.*;
public class SelectionSortExample
(
public static void main(String args())
(
int n, i, j, tempvar;
Scanner sc = new Scanner(System.in); //To take the input from user
System.out.print("Enter the size of array : \n");
n = sc.nextInt();
int array() = new int(n); //initialising the array
System.out.print("Enter the elements that need to be inserted in the array : \n");
//inserting the elements to the array
for(i=0; i (
array(i) = sc.nextInt();
)
System.out.print("array before Sorting: \n"+ Arrays.toString(array));
System.out.print("\nSorting begins here..\n");
for(i=0; i (
for(j=i+1; j (
if(array(i) > array(j))
(
tempvar = array(i);
array(i) = array(j);
array(j) = tempvar;
)
)
)
System.out.print("Array after Sorting is :\n");
for(i=0; i (
System.out.print(array(i)+ " ");
)
)
)
import java.util.*;
public class SelectionSortExample
(
public static void main(String args())
(
int n, i, j, tempvar;
Scanner sc = new Scanner(System.in); //To take the input from user
System.out.print("Enter the size of array : \n");
n = sc.nextInt();
int array() = new int(n); //initialising the array
System.out.print("Enter the elements that need to be inserted in the array : \n");
//inserting the elements to the array
for(i=0; i (
array(i) = sc.nextInt();
)
System.out.print("array before Sorting: \n"+ Arrays.toString(array));
System.out.print("\nSorting begins here..\n");
for(i=0; i (
for(j=i+1; j (
if(array(i) > array(j))
(
tempvar = array(i);
array(i) = array(j);
array(j) = tempvar;
)
)
)
System.out.print("Array after Sorting is :\n");
for(i=0; i (
System.out.print(array(i)+ " ");
)
)
)
import java.util.*;
public class SelectionSortExample
(
public static void main(String args())
(
int n, i, j, tempvar;
Scanner sc = new Scanner(System.in); //To take the input from user
System.out.print("Enter the size of array : \n");
n = sc.nextInt();
int array() = new int(n); //initialising the array
System.out.print("Enter the elements that need to be inserted in the array : \n");
//inserting the elements to the array
for(i=0; i (
array(i) = sc.nextInt();
)
System.out.print("array before Sorting: \n"+ Arrays.toString(array));
System.out.print("\nSorting begins here..\n");
for(i=0; i (
for(j=i+1; j (
if(array(i) > array(j))
(
tempvar = array(i);
array(i) = array(j);
array(j) = tempvar;
)
)
)
System.out.print("Array after Sorting is :\n");
for(i=0; i (
System.out.print(array(i)+ " ");
)
)
)

Uscita campione:

Qui, gli elementi di input forniti dall'utente verranno confrontati con la variabile temporanea e scambiati. Il processo verrà ripetuto fino alla formazione di un array ordinato.

Prestazioni dell'ordinamento per selezione

Questa tecnica di ordinamento viene utilizzata per la sua semplicità e alcuni altri vantaggi prestazionali rispetto ad altre tecniche di ordinamento più.

Conclusione

L'ordinamento di selezione non funziona in modo efficiente su elenchi di grandi dimensioni poiché richiede più tempo per il confronto. L'ordinamento di selezione è un metodo in cui un array di input verrà diviso in due sottoparagrafi al fine di mantenerli elementi ordinati e non ordinati. L'elemento minimo nella matrice verrà scambiato con l'elemento nella prima posizione e il processo continuerà fino a formare una matrice ordinata.

Articoli consigliati

Questa è una guida per selezionare l'ordinamento in Java. Qui discutiamo l'introduzione, il funzionamento e le prestazioni dell'ordinamento di selezione insieme ad alcuni esempi. Puoi anche consultare i seguenti articoli per saperne di più -

  1. Unisci ordinamento in Java
  2. Ordinamento dell'heap in Java
  3. Costruttore di copie in Java
  4. Motivi a stelle in Java
  5. Ordinamento dell'heap in Python

Categoria: