# Find k maximum elements of array in original order

• Difficulty Level : Easy

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.

## C++

 `// C++ program to find k maximum elements``// of array in original order``#include ``using` `namespace` `std;` `// Function to print m Maximum elements``void` `printMax(``int` `arr[], ``int` `k, ``int` `n)``{``    ``// vector to store the copy of the``    ``// original array``    ``vector<``int``> brr(arr, arr + n);` `    ``// Sorting the vector in descending``    ``// order. Please refer below link for``    ``// details``    ``// https://www.geeksforgeeks.org/sort-c-stl/``    ``sort(brr.begin(), brr.end(), greater<``int``>());` `    ``// Traversing through original array and``    ``// printing all those elements that are``    ``// in first k of sorted vector.``    ``// Please refer https://goo.gl/44Rwgt``    ``// for details of binary_search()``    ``for` `(``int` `i = 0; i < n; ++i)``        ``if` `(binary_search(brr.begin(),``                 ``brr.begin() + k, arr[i],``                        ``greater<``int``>()))``            ``cout << arr[i] << ``" "``;``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 50, 8, 45, 12, 25, 40, 84 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);``    ``int` `k = 3;``    ``printMax(arr, k, n);``    ``return` `0;``}`

## 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`

## Python3

 `# Python3 program to find k maximum elements``# of array in original order` `# Function to print m Maximum elements``def` `printMax(arr, k, n):``    ` `    ``# vector to store the copy of the``    ``# original array``    ``brr ``=` `arr.copy()``    ` `    ``# Sorting the vector in descending``    ``# order. Please refer below link for``    ``# details``    ``brr.sort(reverse ``=` `True``)``    ` `    ``# Traversing through original array and``    ``# print all those elements that are``    ``# in first k of sorted vector.``    ``for` `i ``in` `range``(n):``        ``if` `(arr[i] ``in` `brr[``0``:k]):``            ``print``(arr[i], end ``=` `" "``)` `# Driver code``arr ``=` `[ ``50``, ``8``, ``45``, ``12``, ``25``, ``40``, ``84` `]``n ``=` `len``(arr)``k ``=` `3` `printMax(arr, k, n)` `# This code is contributed by SHUBHAMSINGH10`

## C#

 `// C# program to find k maximum ``// elements of array in original order``using` `System;``using` `System.Linq;` `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``    ``int``[] brr = ``new` `int``[n];``    ` `    ``for``(``int` `i = 0; i < n; i++)``        ``brr[i] = arr[i];``    ` `    ``// Sorting the array in``    ``// descending order``    ``Array.Sort(brr);``    ``Array.Reverse(brr);``    ` `    ``int``[] crr = ``new` `int``[k];``    ` `    ``for``(``int` `i = 0; i < k; i++)``    ``{``        ``crr[i] = brr[i];``    ``}` `    ``// 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 Array.BinarySearch()``    ``for``(``int` `i = 0; i < n; ++i)``    ``{``        ``if` `(crr.Contains(arr[i]))``        ``{``            ``Console.Write(arr[i] + ``" "``);``        ``}``    ``}``}` `// Driver code``public` `static` `void` `Main()``{``    ``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 Shubhamsingh10`

## Javascript

 ``

Output:

`50 45 84 `

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

My Personal Notes arrow_drop_up