Average of remaining elements after removing K largest and K smallest elements from array - GeeksforGeeks

08 Apr, 2021
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++
Java
Python3
C#
PHP
Javascript
// 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 implementation of the above approach import 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 implementation of the# above approach # Function to find averagedef 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 codeif __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# implementation of the above approach using 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 implementation of the// above approach // Function to find averagefunction 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?>
<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
 
vt_m
29AjayKumar
ankthon
Akanksha_Rai
aashish1995
Order-Statistics
Technical Scripter 2018
Arrays
Sorting
Arrays
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Introduction to Arrays
Multidimensional Arrays in Java
Python | Using 2D arrays/lists the right way
Linked List vs Array
Maximum and minimum of an array using minimum number of comparisons