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:
The Thread.join() Method in Java
The XOR Operator in Java
Java Program to Implement a Binary Search Tree using Linked Lists
Java Program to Implement Vector API
Spring Security OAuth2 – Simple Token Revocation
Java Program to Find the Shortest Path Between Two Vertices Using Dijkstra’s Algorithm
Hướng dẫn Java Design Pattern – State
Java Program to Perform String Matching Using String Library
Java Program to Implement VList
Read an Outlook MSG file
Working with Network Interfaces in Java
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
Java Program to Implement Uniform-Cost Search
Login For a Spring Web App – Error Handling and Localization
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Guide to the Synchronized Keyword in Java
Java Program to Find a Good Feedback Vertex Set
Iterating over Enum Values in Java
Hamcrest Collections Cookbook
Java Program to Check whether Graph is Biconnected
Java Program to Implement Segment Tree
Reactive WebSockets with Spring 5
Java Program to Perform Insertion in a BST
Using a List of Values in a JdbcTemplate IN Clause
HashMap trong Java hoạt động như thế nào?
Java toString() Method
What is Thread-Safety and How to Achieve it?
Guide to Guava Table
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
Merging Two Maps with Java 8
Overview of Spring Boot Dev Tools
Converting String to Stream of chars