Unsur tatasusunan yang manakah mempunyai jumlah perbezaan mutlak terkecil?

PHPz
Lepaskan: 2023-08-29 10:09:06
ke hadapan
701 orang telah melayarinya

Unsur tatasusunan yang manakah mempunyai jumlah perbezaan mutlak terkecil?

Di sini, kita akan melihat soalan yang menarik. Kami mempunyai tatasusunan 'a' yang mengandungi elemen N. Kita perlu mencari unsur x yang meminimumkan nilai |a[0] - x| + |a[1] - x| + ... + |a[n-1] - x|. Kemudian kita perlu mencari jumlah minimum.

Katakan tatasusunan ialah: {1, 3, 9, 6, 3}, dan sekarang x ialah 3. Jadi jumlahnya ialah |1 - 3|.

Untuk menyelesaikan masalah ini, kita perlu memilih median tatasusunan sebagai x. Jika saiz tatasusunan adalah genap, akan terdapat dua nilai median. Mereka semua adalah pilihan terbaik untuk x.

Algoritma

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
Salin selepas log masuk

Contoh

#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);
}
Salin selepas log masuk

Output

Sum : 11
Salin selepas log masuk

Atas ialah kandungan terperinci Unsur tatasusunan yang manakah mempunyai jumlah perbezaan mutlak terkecil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan