Java Tutorial

# Java Program for Selection Sorting

## What is selection sort ?

Selection sorting is based on the idea of finding the minimum element or maximum element in an unsorted list of elements and then putting each elements in correct position in order to get sorted list of elements.

In the i'th pass, we select the record with lowest key among array[i],..., array[n] and we swap it with array[i]. As a result after i passes, the lowest records will occupy array[1],..., array[i] in sorted order.

## Selection Sorting Time complexity

Selection sorting time complexity is O(N^2). here N is the number of elements in the list, (N−1)(N−1) + (N−2)(N−2) + ... + 1 = (N(N−1))/2 comparisons.

## Selection Sorting Java Program

This java program is used to sort the array of integers using selection sorting technique with finding minimum value index to swap with current index value in each iteration.

```import java.util.Scanner;

public class SelectionSortingTest {
// Swaps the min element and current index value.
public static void swap(int[] listVals, int minValIndex, int index){
int temp = listVals[minValIndex];
listVals[minValIndex] = listVals[index];
listVals[index] = temp;
}

public static void selectionSort(int[] listVals){
int numberOfElements = listVals.length;
//  reduces the each inner iteration loop size by one
for(int i=0;i<numberOfElements-1;i++){
// position of minimum element in the list
// Assuming first element to be the minimum
int minValIndex = i;
// finds minimum value position in the list of elements.
for(int j=i+1;j<numberOfElements;j++){
if(listVals[j]<listVals[minValIndex]){
minValIndex = j;
}
}
swap(listVals, minValIndex, i);
}
}

public static void main(String[] args){
int[] numberList;
Scanner in = new Scanner(System.in);
System.out.println("Selection Sorting");
System.out.println("--------------------");
System.out.println("Enter numbers count: ");
int count = in.nextInt();
numberList = new int[count];
System.out.println("Enter numbers: ");
for (int i=0;i<count;i++){
numberList[i]=in.nextInt();
}
in.close();
selectionSort(numberList);

System.out.println("Sorted numbers: ");
for(int number : numberList){
System.out.print(number+"\t");
}
}
}
```
Output:
```\$ javac SelectionSortingTest.java
\$ java SelectionSortingTest
Selection Sorting
--------------------
Enter numbers count:
5
Enter numbers:
25
17
35
5
18
Sorted numbers:
5	17	18	25	35
```

## Selection Sorting Java Program using Maximum Element

This java program is used to sort the array of integers using selection sorting technique with finding maximum value index to swap with current index value in each iteration.

```import java.util.Scanner;

public class SelectionSortingTest {
// Swaps the max element and current index value.
public static void swap(int[] listVals, int maxValIndex, int index){
int temp = listVals[maxValIndex];
listVals[maxValIndex] = listVals[index];
listVals[index] = temp;
}

public static void selectionSort(int[] listVals){
int numberOfElements = listVals.length;
//  reduces the each inner iteration loop size by one
for(int i=0;i<numberOfElements-1;i++){
// position of maximum element in the list
// Assuming first element to be the maximum
int maxValIndex = i;
// finds maximum value position in the list of elements.
for(int j=i+1;j<numberOfElements;j++){
if(listVals[j]<listVals[maxValIndex]){
maxValIndex = j;
}
}
swap(listVals, maxValIndex, i);
}
}

public static void main(String[] args){
int[] numberList;
Scanner in = new Scanner(System.in);
System.out.println("Selection Sorting");
System.out.println("--------------------");
System.out.println("Enter numbers count: ");
int count = in.nextInt();
numberList = new int[count];
System.out.println("Enter numbers: ");
for (int i=0;i<count;i++){
numberList[i]=in.nextInt();
}
in.close();
selectionSort(numberList);

System.out.println("Sorted numbers: ");
for(int number : numberList){
System.out.print(number+"\t");
}
}
}
```
Output:
```\$ javac SelectionSortingTest.java
\$ java SelectionSortingTest
Selection Sorting
--------------------
Enter numbers count:
6
Enter numbers:
24
19
5
34
27
18
Sorted numbers:
5	18	19	24	27	34
```

Java Tutorial