This is a java program to find the ith largest element from a list using order-statistic algorithm. This version of the code uses quick sort partitioning technique.
Here is the source code of the Java Program to Find ith Largest Number from a Given List Using Order-Statistic Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
package com.sanfoundry.combinatorial; import java.util.Scanner; public class KthLargestOrderStatistics { public static int partition(int[] array, int first, int last) { int pivot = array[first]; int pivotPosition = first++; while (first <= last) { // scan for values less than the pivot while ((first <= last) && (array[first] < pivot)) { first++; } // scan for values greater than the pivot while ((last >= first) && (array[last] >= pivot)) { last--; } if (first > last) { // swap the last uncoformed // element with the pivot swap(array, pivotPosition, last); } else { // swap unconformed elements: // first that was not lesser than the pivot // and last that was not larger than the pivot swap(array, first, last); } } return last; } private static void swap(int[] array, int first, int last) { int temp; temp = array[first]; array[first] = array[last]; array[last] = temp; } public static int orderStatistic(int[] array, int k, int first, int last) { int pivotPosition = partition(array, first, last); if (pivotPosition == k - 1) { return array[k - 1]; } if (k - 1 < pivotPosition) { return orderStatistics(array, k, first, pivotPosition - 1); } else { return orderStatistics(array, k, pivotPosition + 1, last); } } // iterative version private static int orderStatistics(int[] array, int k, int first, int last) { int pivotPosition = partition(array, first, last); while (pivotPosition != k - 1) { if (k - 1 < pivotPosition) { last = pivotPosition - 1; } else { first = pivotPosition + 1; } pivotPosition = partition(array, first, last); } return array[k - 1]; } public static int kthSmallest(int[] array, int k) { return orderStatistic(array, k, 0, array.length - 1); } public static int kthLargest(int[] array, int k) { return orderStatistic(array, array.length - k + 1, 0, array.length - 1); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter the number of elements in the sequence: "); int n = sc.nextInt(); int[] sequence = new int[n]; System.out.println("Enter the elements of the sequence: "); for (int i = 0; i < sequence.length; i++) { sequence[i] = sc.nextInt(); } System.out .println("Enter the kth index to be returned as kth largest element of the sequence:"); int k = sc.nextInt(); System.out.println("Kth largest:" + kthLargest(sequence, k)); sc.close(); } }
Output:
$ javac KthLargestOrderStatistics.java $ java KthLargestOrderStatistics Enter the number of elements in the sequence: 10 Enter the elements of the sequence: 2 5 6 7 4 7 9 5 8 1 Enter the kth index to be returned as kth largest element of the sequence: 4 Kth largest:7
Related posts:
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Java Program to Implement Interval Tree
Spring WebClient vs. RestTemplate
Java Program to Solve a Matching Problem for a Given Specific Case
Summing Numbers with Java Streams
So sánh Array và ArrayList trong Java
Java Program to Implement an Algorithm to Find the Global min Cut in a Graph
Java Byte Array to InputStream
Java Program to Implement Binomial Tree
Spring Boot - Creating Docker Image
OAuth 2.0 Resource Server With Spring Security 5
Guide to Selenium with JUnit / TestNG
CharSequence vs. String in Java
Java Program to implement Bit Matrix
Java Program to Generate All Subsets of a Given Set in the Lexico Graphic Order
Hướng dẫn sử dụng Java Generics
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Java Program to Implement Radix Sort
Remove All Occurrences of a Specific Value from a List
Spring Boot - Thymeleaf
Converting Between an Array and a Set in Java
OAuth2 Remember Me with Refresh Token
A Guide to TreeSet in Java
Zipping Collections in Java
Introduction to Netflix Archaius with Spring Cloud
An Introduction to Java.util.Hashtable Class
Migrating from JUnit 4 to JUnit 5
Apache Commons Collections OrderedMap
Iterating over Enum Values in Java
Java IO vs NIO
Introduction to Spring MVC HandlerInterceptor
Hamcrest Collections Cookbook