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 Boot Gradle Plugin
Java Program to Implement DelayQueue API
Java Program to Find Strongly Connected Components in Graphs
Java Program to Implement Expression Tree
Show Hibernate/JPA SQL Statements from Spring Boot
Java Program to Find Number of Articulation points in a Graph
Hướng dẫn Java Design Pattern – Interpreter
Tính trừu tượng (Abstraction) trong Java
New in Spring Security OAuth2 – Verify Claims
Convert String to int or Integer in Java
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Java Program to find the peak element of an array using Binary Search approach
Spring Boot Configuration with Jasypt
Java Program to Implement Uniform-Cost Search
Guide to UUID in Java
Java Program to Implement Multi-Threaded Version of Binary Search Tree
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Java Program to Find the Minimum value of Binary Search Tree
Guide to the Synchronized Keyword in Java
Java Program to Implement Stack API
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
Mix plain text and HTML content in a mail
Map to String Conversion in Java
Giới thiệu Google Guice – Aspect Oriented Programming (AOP)
Spring JDBC
Java Program to Implement Heap Sort Using Library Functions
Request Method Not Supported (405) in Spring
Java Program to Compute Cross Product of Two Vectors
Java Program to Implement a Binary Search Tree using Linked Lists
Iterating over Enum Values in Java
Custom Cascading in Spring Data MongoDB