Problem Description :
Given an array of integers, sort the array in ascending order using the Bubble Sort algorithm above. Once sorted, print the following three lines:
- Array is sorted in numSwaps swaps., where numSwaps is the number of swaps that took place.
- First Element: firstElement, where firstElement is the first element in the sorted array.
- Last Element: lastElement, where lastElement is the last element in the sorted array.
See full description on HackerRank :
Input and Output :
Input :
a = [6, 4, 1]
Output :
1 [4,6,1]
2 [4,1,6]
3 [1,4,6]
Array is sorted in 3 swaps.
First Element: 1
Last Element: 6
In this problem we already have bubble sort code. we have to simply print swap count, first element and last element after swap. So lets see solution.
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
class Result {
public static void countSwaps(List<Integer> a) {
int size = a.size();
int totalSwap = 0;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size - 1; j++) {
// Swap adjacent elements if they are in decreasing order
if (a.get(j) > a.get(j + 1)) {
int temp = a.get(j);
a.set(j, a.get(j + 1));
a.set(j+1, temp);
totalSwap++;
}
}
}
System.out.println("Array is sorted in " +totalSwap+ " swaps.");
System.out.println("First Element: "+ a.get(0));
System.out.println("Last Element: "+a.get(size-1));
}
}
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bufferedReader.readLine().trim());
String[] aTemp = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");
List<Integer> a = new ArrayList<>();
for (int i = 0; i < n; i++) {
int aItem = Integer.parseInt(aTemp[i]);
a.add(aItem);
}
Result.countSwaps(a);
bufferedReader.close();
}
}
Solution explanation :
- For count we have taken totalSwap variable and initialize with 0. In for loop we have to increment totalSwap variable after swapping values.
- After for loop we are printing totalSwap value.
- For printing firstElement and lastElement from list we are using get() method of list.
Happy Coding. Happy Learning.
Other Java articles and HackerRank solution with Explanation :
Comments
Post a Comment