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:
New in Spring Security OAuth2 – Verify Claims
Wiring in Spring: @Autowired, @Resource and @Inject
HashMap trong Java hoạt động như thế nào?
Using a List of Values in a JdbcTemplate IN Clause
Service Registration with Eureka
Java Program to Check for balanced parenthesis by using Stacks
Java Program to Perform Left Rotation on a Binary Search Tree
Hướng dẫn Java Design Pattern – MVC
Spring Boot - Web Socket
Java Deep Learning Essentials - Yusuke Sugomori
Java Program to Implement Levenshtein Distance Computing Algorithm
Java Program to Find the Longest Path in a DAG
Guide to Mustache with Spring Boot
Spring Boot - Cloud Configuration Client
Java Copy Constructor
Introduction to Spring MVC HandlerInterceptor
Case-Insensitive String Matching in Java
Convert Hex to ASCII in Java
Java Program to Solve any Linear Equation in One Variable
HttpAsyncClient Tutorial
CharSequence vs. String in Java
Immutable Map Implementations in Java
Guide to Java 8 groupingBy Collector
Spring Boot - Exception Handling
Java Program to Implement Pairing Heap
Java Program to Perform Polygon Containment Test
Simple Single Sign-On with Spring Security OAuth2
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Java Program to Implement Karatsuba Multiplication Algorithm
Using Optional with Jackson
Java Program to Find Inverse of a Matrix
Guide to @JsonFormat in Jackson