Given an array of N integers. The task is to find the average of the numbers after removing k largest elements and k smallest element from the array i.e. calculate the average value of the remaining N – 2K elements.
Examples:
Input: arr = [1, 2, 4, 4, 5, 6], K = 2
Output: 4
Remove 2 smallest elements i.e. 1 and 2
Remove 2 largest elements i.e. 5 and 6
Remaining elements are 4, 4. So average of 4, 4 is 4.Input: arr = [1, 2, 3], K = 3
Output: 0
Approach:
- If no. of elements to be removed is greater than no. of elements present in the array, then ans = 0.
- Else, Sort all the elements of the array. Then, calculate average of elements from Kth index to n-k-1th index.
Below is the implementation of the above approach:
C++
// C++ implementation of the above approach#include <bits/stdc++.h>using namespace std;// Function to find averagedouble average(int arr[], int n, int k){ double total = 0; // base case if 2*k>=n // means all element get removed if (2 * k >= n) return 0; // first sort all elements sort(arr, arr + n); int start = k, end = n - k - 1; // sum of req number for (int i = start; i <= end; i++) total += arr[i]; // find average return (total / (n - 2 * k));}// Driver codeint main(){ int arr[] = { 1, 2, 4, 4, 5, 6 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 2; cout << average(arr, n, k) << endl; return 0;} |
Java
// Java implementation of the above approachimport java.io.*;import java.util.*;class GFG {// Function to find averagestatic double average(int arr[], int n, int k){ double total = 0; // base case if 2*k>=n // means all element get removed if (2 * k >= n) return 0; // first sort all elements Arrays.sort(arr); int start = k, end = n - k - 1; // sum of req number for (int i = start; i <= end; i++) total += arr[i]; // find average return (total / (n - 2 * k));}// Driver code public static void main (String[] args) { int arr[] = { 1, 2, 4, 4, 5, 6 }; int n = arr.length; int k = 2; System.out.println( average(arr, n, k)); }}// This code is contributed by anuj_67.. |
Python3
# Python3 implementation of the # above approach # Function to find average def average(arr, n, k) : total = 0 # base case if 2*k>=n # means all element get removed if (2 * k >= n) : return 0 # first sort all elements arr.sort() start , end = k , n - k - 1 # sum of req number for i in range(start, end + 1) : total += arr[i] # find average return (total / (n - 2 * k))# Driver code if __name__ == "__main__" : arr = [ 1, 2, 4, 4, 5, 6 ] n = len(arr) k = 2 print(average(arr, n, k)) # This code is contributed by Ryuga |
C#
// C# implementation of the above approachusing System; public class GFG { // Function to find average static double average(int []arr, int n, int k) { double total = 0; // base case if 2*k>=n // means all element get removed if (2 * k >= n) return 0; // first sort all elements Array.Sort(arr); int start = k, end = n - k - 1; // sum of req number for (int i = start; i <= end; i++) total += arr[i]; // find average return (total / (n - 2 * k)); } // Driver code public static void Main() { int []arr = { 1, 2, 4, 4, 5, 6 }; int n = arr.Length; int k = 2; Console.WriteLine( average(arr, n, k)); }}//This code is contributed by 29AjayKumar |
PHP
<?php// Php implementation of the // above approach // Function to find average function average($arr, $n, $k){ $total = 0; // base case if 2*k>=n // means all element get removed if (2 * $k >= $n) return 0; // first sort all elements sort($arr) ; $start = $k ; $end = $n - $k - 1; // sum of req number for ($i = $start; $i <= $end; $i++) $total += $arr[$i]; // find average return ($total / ($n - 2 * $k)); } // Driver code $arr = array(1, 2, 4, 4, 5, 6); $n = sizeof($arr);$k = 2; echo average($arr, $n, $k);// This code is contributed by Ryuga?> |
Javascript
<script>// Javascript implementation of the above approach// Function to find averagefunction average(arr, n, k) { var total = 0; // Base case if 2*k>=n // means all element get removed if (2 * k >= n) return 0; // First sort all elements arr.sort(); var start = k, end = n - k - 1; // Sum of req number for(i = start; i <= end; i++) total += arr[i]; // Find average return (total / (n - 2 * k));}// Driver codevar arr = [ 1, 2, 4, 4, 5, 6 ];var n = arr.length;var k = 2;document.write(average(arr, n, k));// This code is contributed by aashish1995</script> |
4
Time Complexity: O(n log n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Read More on to that Topic: geeksforgeeks.org/average-of-remaining-elements-after-removing-k-largest-and-k-smallest-elements-from-array/ […]
… [Trackback]
[…] Information on that Topic: geeksforgeeks.org/average-of-remaining-elements-after-removing-k-largest-and-k-smallest-elements-from-array/ […]
… [Trackback]
[…] Info on that Topic: geeksforgeeks.org/average-of-remaining-elements-after-removing-k-largest-and-k-smallest-elements-from-array/ […]