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:
ETags for REST with Spring
Java Program to Generate Random Numbers Using Middle Square Method
Static Content in Spring WebFlux
Quick Guide to the Java StringTokenizer
Java Program to Permute All Letters of an Input String
Command-Line Arguments in Java
Reactive WebSockets with Spring 5
4 tính chất của lập trình hướng đối tượng trong Java
Java Program to Implement Heap
Testing an OAuth Secured API with Spring MVC
Java Program to Find the Longest Subsequence Common to All Sequences in a Set of Sequences
A Guide to the Java ExecutorService
Hướng dẫn Java Design Pattern – Strategy
Java Program to Find the Vertex Connectivity of a Graph
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Concrete Class in Java
A Guide to BitSet in Java
Java Program to Implement LinkedList API
Consumer trong Java 8
Introduction to Using Thymeleaf in Spring
Hướng dẫn Java Design Pattern – DAO
Java Program to Implement Control Table
Java Program to Check Whether Graph is DAG
Setting Up Swagger 2 with a Spring REST API
Bootstrapping Hibernate 5 with Spring
Spring Boot - File Handling
Dynamic Proxies in Java
Java Program to Implement Sparse Array
Transaction Propagation and Isolation in Spring @Transactional
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Spring Boot - Cloud Configuration Server
A Guide to ConcurrentMap