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 the Java ArrayList
Java InputStream to Byte Array and ByteBuffer
Login For a Spring Web App – Error Handling and Localization
Arrays.asList vs new ArrayList(Arrays.asList())
Java Program to Implement String Matching Using Vectors
Spring Boot - Actuator
Java Program to Construct an Expression Tree for an Prefix Expression
Hamcrest Collections Cookbook
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Java Program to Implement ArrayDeque API
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Running Spring Boot Applications With Minikube
Java Program to Implement a Binary Search Tree using Linked Lists
Converting Iterator to List
Hướng dẫn Java Design Pattern – Intercepting Filter
Java Program to Perform Polygon Containment Test
Working with Tree Model Nodes in Jackson
Java Program to Implement Ternary Search Algorithm
Hướng dẫn Java Design Pattern – Composite
A Guide To UDP In Java
Spring Webflux with Kotlin
Guide to the Fork/Join Framework in Java
The XOR Operator in Java
The Registration API becomes RESTful
Spring Boot - Tomcat Deployment
Convert String to Byte Array and Reverse in Java
Spring MVC Async vs Spring WebFlux
An Intro to Spring Cloud Zookeeper
Hướng dẫn Java Design Pattern – Abstract Factory
Java Program to Implement Bubble Sort
Mapping a Dynamic JSON Object with Jackson
Array to String Conversions