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:

Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Apache Camel with Spring Boot
Java Program to Perform Naive String Matching
Java Program to Implement Self Balancing Binary Search Tree
Convert a Map to an Array, List or Set in Java
Java Program to Implement ArrayList API
Upload and Display Excel Files with Spring MVC
Java Program to Check Cycle in a Graph using Topological Sort
Java Program to Use Dynamic Programming to Solve Approximate String Matching
Java Program to Implement Direct Addressing Tables
Hướng dẫn Java Design Pattern – Strategy
Java Program to Perform Sorting Using B-Tree
Form Validation with AngularJS and Spring MVC
Registration with Spring Security – Password Encoding
Java Stream Filter with Lambda Expression
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Spring Boot - Cloud Configuration Client
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Java Program to Implement Bloom Filter
Introduction to Spring Security Expressions
How To Serialize and Deserialize Enums with Jackson
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Wrapper Classes in Java
Java Program to Encode a Message Using Playfair Cipher
Java Program to Implement Red Black Tree
Apache Commons Collections SetUtils
Wiring in Spring: @Autowired, @Resource and @Inject
Spring MVC Custom Validation
Java Program to Implement Sparse Array
Java Program to Implement Weight Balanced Tree
Spring’s RequestBody and ResponseBody Annotations
Spring Security – security none, filters none, access permitAll