Related Articles

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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