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 Graph is a Bipartite using DFS
Java Web Services – JAX-WS – SOAP
A Guide to LinkedHashMap in Java
Java Program to Create the Prufer Code for a Tree
Spring Boot - Code Structure
Show Hibernate/JPA SQL Statements from Spring Boot
Guide to Selenium with JUnit / TestNG
Guide to DelayQueue
Spring Webflux and CORS
Extra Login Fields with Spring Security
Guide to @JsonFormat in Jackson
Spring Boot - Google Cloud Platform
Lớp Collectors trong Java 8
Versioning a REST API
Java Program to do a Depth First Search/Traversal on a graph non-recursively
A Guide to the ResourceBundle
Java – Try with Resources
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Java Program to Implement the One Time Pad Algorithm
Converting String to Stream of chars
Daemon Threads in Java
Java Program to Implement Weight Balanced Tree
Template Engines for Spring
Java – InputStream to Reader
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
String Initialization in Java
Guide to Character Encoding
Spring Cloud Connectors and Heroku
Java Program to Implement the Program Used in grep/egrep/fgrep
Một số nguyên tắc, định luật trong lập trình
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Spring Cloud AWS – S3