# Java Program to Find k maximum elements of array in original order

• Last Updated : 18 Jan, 2022

Given an array arr[] and an integer k, we need to print k maximum elements of given array. The elements should printed in the order of the input.
Note : k is always less than or equal to n.

Examples:

```Input : arr[] = {10 50 30 60 15}
k = 2
Output : 50 60
The top 2 elements are printed
as per their appearance in original
array.

Input : arr[] = {50 8 45 12 25 40 84}
k = 3
Output : 50 45 84```

Method 1: We search for the maximum element k times in the given array. Each time we find one maximum element, we print it and replace it with minus infinite (INT_MIN in C) in the array. The time complexity of this method is O(n*k).

Method 2: In this method, we store the original array in a new array and will sort the new array in descending order. After sorting, we iterate the original array from 0 to n and print all those elements that appear in first k elements of new array. For searching, we can do Binary Search.

## Java

 `// Java program to find k maximum  ``// elements of array in original order``import` `java.util.Arrays;``import` `java.util.Collections;`` ` `public` `class` `GfG {``     ` `    ``// Function to print m Maximum elements``    ``public` `static` `void` `printMax(``int` `arr[], ``int` `k, ``int` `n)``    ``{``        ``// Array to store the copy ``        ``// of the original array``        ``Integer[] brr = ``new` `Integer[n];``         ` `        ``for` `(``int` `i = ``0``; i < n; i++)``        ``brr[i] = arr[i];``         ` `        ``// Sorting the array in ``        ``// descending order``        ``Arrays.sort(brr, Collections.reverseOrder());``     ` `        ``// Traversing through original array and``        ``// printing all those elements that are``        ``// in first k of sorted array.``        ``// Please refer https://goo.gl/uj5RCD``        ``// for details of Arrays.binarySearch()``        ``for` `(``int` `i = ``0``; i < n; ++i)``            ``if` `(Arrays.binarySearch(brr, arr[i], ``                    ``Collections.reverseOrder()) >= ``0``                 ``&& Arrays.binarySearch(brr, arr[i], ``                    ``Collections.reverseOrder()) < k)``                     ` `                ``System.out.print(arr[i]+ ``" "``);``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `arr[] = { ``50``, ``8``, ``45``, ``12``, ``25``, ``40``, ``84` `};``        ``int` `n = arr.length;``        ``int` `k = ``3``;``        ``printMax(arr, k, n);``    ``}``}`` ` `// This code is contributed by Swetank Modi`

Output:

`50 45 84 `

Time Complexity: O(n Log n) for sorting.
Auxiliary Space: O(n)

Please refer complete article on Find k maximum elements of array in original order for more details!

My Personal Notes arrow_drop_up