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:
Hướng dẫn Java Design Pattern – Intercepting Filter
Java Program to Implement Queue using Linked List
Java Program to Check Whether Topological Sorting can be Performed in a Graph
Spring’s RequestBody and ResponseBody Annotations
Java – Reader to Byte Array
Java Program to Implement RenderingHints API
Java Program to Perform the Sorting Using Counting Sort
Multi Dimensional ArrayList in Java
Lớp Arrarys trong Java (Arrays Utility Class)
SOAP Web service: Authentication trong JAX-WS
Spring Boot - Unit Test Cases
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Java Program to Implement Splay Tree
Spring Security Authentication Provider
Quick Guide to Spring Bean Scopes
Using Java Assertions
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Copy a List to Another List in Java
Spring WebFlux Filters
Java Program to Implement Binary Search Tree
Introduction to Eclipse Collections
Java Program to Implement AVL Tree
Spring Security OAuth2 – Simple Token Revocation
Remove the First Element from a List
Spring Data MongoDB Transactions
Extract links from an HTML page
Java Program to Implement Euler Circuit Problem
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
Number Formatting in Java
Check If a String Is Numeric in Java
Java – Combine Multiple Collections
Reversing a Linked List in Java