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:
Spring MVC Setup with Kotlin
Java Program to Use the Bellman-Ford Algorithm to Find the Shortest Path
A Guide to HashSet in Java
A Guide to the ViewResolver in Spring MVC
Using a Spring Cloud App Starter
Java Program to Check whether Undirected Graph is Connected using BFS
Guide to Spring @Autowired
Serialize Only Fields that meet a Custom Criteria with Jackson
Java Program to Search for an Element in a Binary Search Tree
Lớp lồng nhau trong java (Java inner class)
JPA/Hibernate Persistence Context
Initialize a HashMap in Java
Life Cycle of a Thread in Java
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Service Registration with Eureka
Java Program to Implement Knapsack Algorithm
Java InputStream to String
Reading an HTTP Response Body as a String in Java
Set Interface trong Java
Mockito and JUnit 5 – Using ExtendWith
Spring 5 Testing with @EnabledIf Annotation
A Guide to Java 9 Modularity
Java Program to Implement the Checksum Method for Small String Messages and Detect
Java Program to Implement Bucket Sort
An Introduction to Java.util.Hashtable Class
Spring REST API + OAuth2 + Angular
Send email with SMTPS (eg. Google GMail)
Giới thiệu Google Guice – Injection, Scope
Java Program to Find Number of Articulation points in a Graph
Java Program to Implement Ford–Fulkerson Algorithm
Java Program to Check if it is a Sparse Matrix
An Intro to Spring Cloud Contract