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 WebClient and OAuth2 Support
Collection trong java
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Java Program to Check the Connectivity of Graph Using DFS
Jackson Unmarshalling JSON with Unknown Properties
Spring 5 and Servlet 4 – The PushBuilder
Comparing Objects in Java
Java Program to Delete a Particular Node in a Tree Without Using Recursion
How to Store Duplicate Keys in a Map in Java?
Java Program to Check whether Directed Graph is Connected using BFS
Sử dụng CyclicBarrier trong Java
Java Program to Implement Pollard Rho Algorithm
How to Break from Java Stream forEach
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Java Program to Create a Balanced Binary Tree of the Incoming Data
Spring Cloud AWS – S3
Comparing Arrays in Java
Sắp xếp trong Java 8
The Guide to RestTemplate
Java Program to Generate Random Numbers Using Middle Square Method
The Spring @Controller and @RestController Annotations
Java Program to Find Strongly Connected Components in Graphs
Java Program to Check if it is a Sparse Matrix
Recommended Package Structure of a Spring Boot Project
Java Program to Check Whether a Given Point is in a Given Polygon
Java Program to Implement K Way Merge Algorithm
Java Program to Implement Self organizing List
Spring Data Java 8 Support
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Introduction to Using Thymeleaf in Spring
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
How to use the Spring FactoryBean?