Skip to main content

Sorting: Bubble Sort HackerRank solution in Java | Programming Blog

Bubble Sort HackerRank solution in Java

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:

  1. Array is sorted in numSwaps swaps., where numSwaps is the number of swaps that took place.
  2. First Element: firstElement, where firstElement is the first element in the sorted array.
  3. 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

Popular posts from this blog

Queen's Attack II HackerRank Solution in Java with Explanation

Queen's Attack II Problem's Solution in Java (Chessboard Problem)   Problem Description : You will be given a square chess board with one queen and a number of obstacles placed on it. Determine how many squares the queen can attack.  A queen is standing on an n * n chessboard. The chess board's rows are numbered from 1 to n, going from bottom to top. Its columns are numbered from 1 to n, going from left to right. Each square is referenced by a tuple, (r, c), describing the row r and column c, where the square is located. The queen is standing at position (r_q, c_q). In a single move, queen can attack any square in any of the eight directions The queen can move: Horizontally (left, right) Vertically (up, down) Diagonally (four directions: up-left, up-right, down-left, down-right) The queen can move any number of squares in any of these directions, but it cannot move through obstacles. Input Format : n : The size of the chessboard ( n x n ). k : The number of obstacles...

Simple Text Editor HackerRank Solution in Java with Explanation

Simple Text Editor HackerRank Solution in Java with Explanation Problem Description : Implement a simple text editor. The editor initially contains an empty string S. Perform Q operations of the following 4 types: append (W) - Append string W to the end of S. delete (k) - Delete the last K characters of S. print (k) - Print the kth character of S. undo () - Undo the last (not previously undone) operation of type 1 or 2, reverting S to the state it was in prior to that operation. Example : Input : S = "abcde" Operations = ["1 fg", "3 6", "2 5", "4", "3 7", "4", "3 4"] index   S          ops[index]    explanation -----   ------     ----------    ----------- 0       abcde      1 fg          append fg 1       abcdefg    3 6        ...