Java Program to Find kth Smallest Element by the Method of Partitioning the Array

This is a java program to find kth smallest element form the given sequence of numbers. This could be solved by using Quick sort algorithm, where we partition around the pivot element, the entire sequence of numbers is broken down to two, we arrange the number such that numbers smaller than pivot is kept in the first sequence and numbers larger than the pivot is kept in the second sequence. During this comparison we find the kth smallest element.

Here is the source code of the Java Program to Find kth Smallest Element by the Method of Partitioning the Array. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

//This is a java program to find kth smallest element form the randomly generated sequence using partitioning
import java.util.Random;
import java.util.Scanner;
 
public class Kth_Smallest_Partitioning 
{
    public static int N = 20;
    public static int[] A = new int[N];
 
    public static void swap(int dex1, int dex2) 
    {
        int temp = A[dex1];
        A[dex1] = A[dex2];
        A[dex2] = temp;
    }
 
    public static int partition(int start, int end) 
    {
        int i = start + 1;
        int j = i;
        int pivot = start;
        for (; i < end; i++) 
        {
            if (A[i] < A[pivot]) 
            {
                swap(i, j);
                j++;
            }
        }
        if (j <= end)
            swap(pivot, (j - 1));
 
        return j - 1;
    }
 
    public static void quick_sort(int start, int end, int K) {
        int part;
        if (start < end) 
        {
            part = partition(start, end);
            if (part == K - 1)
                System.out.println("kth smallest element : " + A[part]);
            if (part > K - 1)
                quick_sort(start, part, K);
            else
                quick_sort(part + 1, end, K);
        }
        return;
    }
 
    public static void main(String args[]) 
    {
        Random random = new Random();
        for (int i = 0; i < N; i++)
            A[i] = random.nextInt(1000);
 
        System.out.println("The original sequence is:  ");
        for (int i = 0; i < N; i++)
            System.out.print(A[i] + " ");
        Scanner sc = new Scanner(System.in);
        System.out.println("\nEnter the Kth smallest you want to find: ");
        int k = sc.nextInt();
 
        quick_sort(0, N, k);
        sc.close();
    }
}

Output:

$ javac Kth_Smallest_Partitioning.java
$ java Kth_Smallest_Partitioning
 
The original sequence is:  
811 30 934 118 942 89 855 917 474 194 630 887 916 997 851 550 917 841 343 202 
Enter the Kth smallest you want to find: 
3
kth smallest element : 118

Related posts:

Guide to @ConfigurationProperties in Spring Boot
Java Program to Implement a Binary Search Tree using Linked Lists
Spring Boot - Admin Server
Java Program to Implement Find all Back Edges in a Graph
Spring REST API with Protocol Buffers
Spring Webflux and CORS
Removing Elements from Java Collections
Java Program to Perform Left Rotation on a Binary Search Tree
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Java Program to Implement Pollard Rho Algorithm
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
Hướng dẫn Java Design Pattern – Transfer Object
HttpClient Timeout
Java Timer
Java Program to Implement Binomial Tree
Spring Boot - Sending Email
Java Map With Case-Insensitive Keys
Spring Security Logout
Java Program to Create a Random Graph Using Random Edge Generation
Tiêu chuẩn coding trong Java (Coding Standards)
Spring Boot - Introduction
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
The DAO with Spring and Hibernate
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Jackson JSON Views
Converting Between Byte Arrays and Hexadecimal Strings in Java
Java Program to Create a Minimal Set of All Edges Whose Addition will Convert it to a Strongly Conne...
Spring RestTemplate Error Handling
Java Program to Represent Graph Using Adjacency List
Spring Boot Integration Testing with Embedded MongoDB