Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

絶対差の合計が最小の配列要素?


ここで、1つの興味深い問題が発生します。 N個の要素を持つ1つの配列「a」を使用しています。 | a [0]--x|となるような要素xを見つける必要があります。 + | a [1] --x|+…+|a [n-1] --x |最小化されます。次に、最小化された合計を見つける必要があります。

配列を次のようにします:{1、3、9、6、3}ここで、xは3です。したがって、合計は|1-3|です。 + | 3-3 | + | 9-3 | + | 6-3 | + | 3-3 | =11.

この問題を解決するには、配列の中央値をxとして選択する必要があります。配列サイズが偶数の場合、2つの中央値があります。どちらもxの最適な選択になります。

アルゴリズム

minSum(arr、n)

begin
   sort array arr
   sum := 0
   med := median of arr
   for each element e in arr, do
      sum := sum + |e - med|
   done
   return sum
end

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int minSum(int arr[], int n){
   sort(arr, arr + n);
   int sum = 0;
   int med = arr[n/2];
   for(int i = 0; i<n; i++){
      sum += abs(arr[i] - med);
   }
   return sum;
}
int main() {
   int arr[5] = {1, 3, 9, 6, 3};
   int n = 5;
   cout << "Sum : " << minSum(arr, n);
}

出力

Sum : 11

  1. 配列内の最小要素を見つけるためのPHPプログラム

    配列内の最小要素を見つけるためのPHPコードは次のとおりです- 例 <?php    function get_min_value($my_array){       $n = count($my_array);       $min_val = $my_array[0];       for ($i = 1; $i < $n; $i++)          if ($min_val > $my_array[$i])

  2. Pythonでソートされた配列の絶対差の合計を見つけるプログラム

    配列numsがあり、それが降順ではない順序でソートされているとします。 result [i]がnums[i]と配列内の他のすべての要素との絶対差の合計になるように、numsと同じ長さのresultという配列を作成する必要があります。 したがって、入力がnums =[5,7,12]のような場合、出力は[9、7、12]になります。 | 5-5 | + | 5-7 | + | 5-12 | =0 + 2 + 7 =9 | 7-5 | + | 7-7 | + | 7-12 | =2 + 0 + 5 =7 | 5-12 | + | 7-12 | + | 12-12 | =7 + 5 + 0