📌  相关文章
📜  选择 n 个元素,使它们的平均值最大

📅  最后修改于: 2021-10-26 05:57:20             🧑  作者: Mango

给定一个包含2 * n 个元素的数组,任务是构造并打印一个包含n 个元素的数组,以使新数组的均值最大。这里n 是偶数

例子:

方法:数组的均值是同一数组元素的平均值,即(∑arr[i]) / n 。因此,为了使数组的平均值最大,从数组中选择最大的n 个元素,这可以通过首先对数组进行排序然后从最大值开始选择元素来完成。
下面是上述方法的实现:

C++
// C++ implementation of the approach
#include 
using namespace std;
 
// Utility function to print the contents
// of an array
void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}
 
// Function to print the array with
// maximum mean
void printMaxMean(int arr[], int n)
{
    int newArr[n];
 
    // Sort the original array
    sort(arr, arr + 2 * n);
 
    // Construct new array
    for (int i = 0; i < n; i++)
        newArr[i] = arr[i + n];
 
    // Print the resultant array
    printArray(newArr, n);
}
 
// Driver code
int main()
{
    int arr[] = { 4, 8, 3, 1, 3, 7, 0, 4 };
    int n = sizeof(arr) / sizeof(arr[0]);
    printMaxMean(arr, n / 2);
 
    return 0;
}


Java
// Java implementation of the approach
import java.util.Arrays;
 
class GfG{
 
    // Utility function to print the 
    // contents of an array
    static void printArray(int arr[], int n)
    {
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
    }
     
    // Function to print the array 
    // with maximum mean
    static void printMaxMean(int arr[], int n)
    {
        int newArr[] = new int[n];
     
        // Sort the original array
        Arrays.sort(arr, 0, 2 * n);
     
        // Construct new array
        for (int i = 0; i < n; i++)
            newArr[i] = arr[i + n];
     
        // Print the resultant array
        printArray(newArr, n);
    }
 
    // Driver code
    public static void main(String []args)
    {
        int arr[] = { 4, 8, 3, 1, 3, 7, 0, 4 };
        int n = arr.length;
        printMaxMean(arr, n / 2);
    }
}
 
// This code is contributed by
// Rituraj Jain


Python3
# Python3 implementation of the approach
 
# Utility function to print the contents
# of an array
def printArray(arr, n) :
    for i in range(n) :
        print(arr[i], end = " ")
 
# Function to print the array with
# maximum mean
def printMaxMean(arr, n) :
    newArr = [0] * n
 
    # Sort the original array
    arr.sort()
 
    # Construct new array
    for i in range(n) :
        newArr[i] = arr[i + n]
 
    # Print the resultant array
    printArray(newArr, n)
 
# Driver code
if __name__ == "__main__" :
 
    arr = [ 4, 8, 3, 1, 3, 7, 0, 4 ]
    n = len(arr)
    printMaxMean(arr, n // 2)
 
# This code is contributed by Ryuga


C#
// C# implementation of the approach
using System;
 
class GfG
{
 
    // Utility function to print the
    // contents of an array
    static void printArray(int[] arr, int n)
    {
        for (int i = 0; i < n; i++)
            Console.Write(arr[i] + " ");
    }
     
    // Function to print the array
    // with maximum mean
    static void printMaxMean(int[] arr, int n)
    {
        int[] newArr = new int[n];
     
        // Sort the original array
        Array.Sort(arr, 0, 2 * n);
     
        // Construct new array
        for (int i = 0; i < n; i++)
            newArr[i] = arr[i + n];
     
        // Print the resultant array
        printArray(newArr, n);
    }
 
    // Driver code
    public static void Main()
    {
        int[] arr = { 4, 8, 3, 1, 3, 7, 0, 4 };
        int n = arr.Length;
        printMaxMean(arr, n / 2);
    }
}
 
// This code is contributed by Ita_c.


PHP


Javascript


输出:
4 4 7 8

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程