📌  相关文章
📜  用范围系数替换数组中的最大元素

📅  最后修改于: 2021-05-04 18:10:37             🧑  作者: Mango

给定一个整数元素数组arr [] ,任务是用同一数组的范围系数替换数组中的最大元素。
范围系数:(最大–最小)/(最大+最小)

例子:

方法:从给定的数组中找到最大和最小元素,并计算范围系数coeff =(Max – Min)/(Max + Min),然后将最大元素替换为计算出的coeff 。数组更新后,打印更新后的数组的内容。

下面是上述方法的实现:

C++
// C++ implementation to replace maximum element
// by coefficient of range
#include 
using namespace std;
  
// Utility function to print the contents of the array
void printArr(float arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
}
  
// Function to replace the maximum element from the array
// with the coefficient of range of the array
void replaceMax(float arr[], int n)
{
  
    // Maximum element from the array
    float max = *std::max_element(arr, arr + n);
  
    // Minimum element from the array
    float min = *std::min_element(arr, arr + n);
  
    // Calculate the coefficient of range for the array
    float range = max - min;
    float coeffOfRange = range / (max + min);
  
    // Assuming all the array elements are distinc
    // Replace the maximum element with
    // the coeffient of range of the array
    for (int i = 0; i < n; i++) {
        if (arr[i] == max) {
            arr[i] = coeffOfRange;
            break;
        }
    }
  
    // Print the updated array
    printArr(arr, n);
}
  
// Driver code
int main()
{
    float arr[] = { 15, 16, 10, 9, 6, 7, 17 };
    int n = sizeof(arr) / sizeof(arr[0]);
    replaceMax(arr, n);
    return 0;
}


Java
// Java implementation to replace maximum element
// by coefficient of range
import java.util.*;
  
class GFG
{
  
// Utility function to print the 
// contents of the array
static void printArr(float arr[], int n)
{
    for (int i = 0; i < n; i++)
        System.out.print(arr[i] + " ");
}
  
// Function to replace the maximum 
// element from the array with the 
// coefficient of range of the array
static void replaceMax(float arr[], int n)
{
    // Maximum element from the array
    float max = arr[0];
    for(int i = 0; i < n; i++)
    { 
        if(arr[i] > max)
        max = arr[i];
    } 
    // Minimum element from the arra
    float min = arr[0];
    for(int i = 0; i < n; i++)
    { 
        if(arr[i] < min)
        min = arr[i];
    } 
  
    // Calculate the coefficient of 
    // range for the array
    float range = max - min;
    float coeffOfRange = range / (max + min);
  
    // Assuming all the array elements are distinc
    // Replace the maximum element with
    // the coeffient of range of the array
    for (int i = 0; i < n; i++) 
    {
        if (arr[i] == max) 
        {
            arr[i] = coeffOfRange;
            break;
        }
    }
  
    // Print the updated array
    printArr(arr, n);
}
  
// Driver code
public static void main(String args[])
{
    float arr[] = { 15, 16, 10, 9, 6, 7, 17 };
    int n = arr.length;
    replaceMax(arr, n);
  
}
}
  
// This code is contributed by
// Sahil_Shelangia


Python3
# Python3 implementation to replace 
# maximum element by coefficient of range 
  
# Utility function to print the
# contents of the array 
def printArr(arr, n) :
      
    for i in range(n) :
        print(arr[i], end = " ")
  
# Function to replace the maximum element 
# from the array with the coefficient of 
# range of the array 
def replaceMax(arr, n) :
  
    # Maximum element from the array 
    max_element = max(arr)
  
    # Minimum element from the array 
    min_element = min(arr)
  
    # Calculate the coefficient of 
    # range for the array 
    ranges = max_element - min_element
    coeffOfRange = ranges / (max_element + min_element) 
  
    # Assuming all the array elements are 
    # distinct. Replace the maximum element 
    # with the coeffient of range of the array 
    for i in range(n) :
        if (arr[i] == max_element) :
            arr[i] = coeffOfRange
            break
  
    # Print the updated array 
    printArr(arr, n)
  
# Driver code 
if __name__ == "__main__" :
      
    arr = [ 15, 16, 10, 9, 6, 7, 17 ]
    n = len(arr) 
      
    replaceMax(arr, n)
  
# This code is contributed by Ryuga


C#
// C# implementation to replace maximum element
// by coefficient of range
using System;
  
class GFG
{
  
// Utility function to print the 
// contents of the array
static void printArr(float []arr, int n)
{
    for (int i = 0; i < n; i++)
        Console.Write(arr[i] + " ");
}
  
// Function to replace the maximum 
// element from the array with the 
// coefficient of range of the array
static void replaceMax(float []arr, int n)
{
    // Maximum element from the array
    float max = arr[0];
    for(int i = 0; i < n; i++)
    { 
        if(arr[i] > max)
        max = arr[i];
    } 
      
    // Minimum element from the arra
    float min = arr[0];
    for(int i = 0; i < n; i++)
    { 
        if(arr[i] < min)
        min = arr[i];
    } 
  
    // Calculate the coefficient of 
    // range for the array
    float range = max - min;
    float coeffOfRange = range / (max + min);
  
    // Assuming all the array elements are distinc
    // Replace the maximum element with
    // the coeffient of range of the array
    for (int i = 0; i < n; i++) 
    {
        if (arr[i] == max) 
        {
            arr[i] = coeffOfRange;
            break;
        }
    }
  
    // Print the updated array
    printArr(arr, n);
}
  
// Driver code
public static void Main()
{
    float []arr = { 15, 16, 10, 9, 6, 7, 17 };
    int n = arr.Length;
    replaceMax(arr, n);
}
}
  
// This code is contributed by
// shs..


PHP


输出:
15 16 10 9 6 7 0.478261

时间复杂度: O(n)