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 Check whether Directed Graph is Connected using DFS
Java Program to Implement RoleUnresolvedList API
Java Program to Implement Tarjan Algorithm
Java Program to find the number of occurrences of a given number using Binary Search approach
Java Program to Find a Good Feedback Vertex Set
Jackson – Unmarshall to Collection/Array
Spring Boot - Database Handling
Java List UnsupportedOperationException
“Stream has already been operated upon or closed” Exception in Java
Java Program to Implement ConcurrentHashMap API
Java Program to Implement Stack
Spring Boot - Build Systems
Primitive Type Streams in Java 8
Java Program to Optimize Wire Length in Electrical Circuit
Partition a List in Java
Mệnh đề if-else trong java
Circular Dependencies in Spring
Spring Boot - Eureka Server
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Spring MVC + Thymeleaf 3.0: New Features
LIKE Queries in Spring JPA Repositories
Period and Duration in Java
Removing Elements from Java Collections
Java Program to Implement Direct Addressing Tables
Lập trình đa luồng với CompletableFuture trong Java 8
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Assertions in JUnit 4 and JUnit 5
Ways to Iterate Over a List in Java
Java Program to Find Number of Spanning Trees in a Complete Bipartite Graph
Java Program to Implement Control Table
Converting Strings to Enums in Java
Model, ModelMap, and ModelAndView in Spring MVC