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:
Spring Boot - Quick Start
Tips for dealing with HTTP-related problems
Java Program to Implement Self organizing List
Redirect to Different Pages after Login with Spring Security
Working with Network Interfaces in Java
Java Program to Implement Borwein Algorithm
Concurrent Test Execution in Spring 5
DistinctBy in the Java Stream API
Java Program to Implement an Algorithm to Find the Global min Cut in a Graph
Convert Character Array to String in Java
Spring Security and OpenID Connect
Java Program to Implement Stack using Linked List
Lớp TreeMap trong Java
Hướng dẫn Java Design Pattern – DAO
Practical Java Examples of the Big O Notation
Intro to Inversion of Control and Dependency Injection with Spring
Java Program to Implement Skew Heap
REST Web service: Basic Authentication trong Jersey 2.x
Tạo số và chuỗi ngẫu nhiên trong Java
Java Program to Perform Naive String Matching
Java Program to Implement Extended Euclid Algorithm
Java Program to Implement the Bin Packing Algorithm
Java Program to Implement Merge Sort on n Numbers Without tail-recursion
Semaphore trong Java
How to Read a Large File Efficiently with Java
Properties with Spring and Spring Boot
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Java Program to Implement Bucket Sort
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
Java Program to Implement Aho-Corasick Algorithm for String Matching
Hướng dẫn Java Design Pattern – Template Method
Mockito and JUnit 5 – Using ExtendWith