配列の中の最大の差あるいは最小の差を求めます
6483 ワード
説明
長さnの整数配列arr[n]を与え,n個の整数があり,配列中の2つの数の最大差を求める.
アルゴリズム#アルゴリズム#
まず最大値と最小値を求めることができ,1サイクルで最大値と最小値を求めることができ,時間複雑度はO(n)であり,両者の差は差が最大である.最小差を求めるのも似ています.
プログラム実装
#include
unsigned int max_difference(const int *arr, unsigned int arr_len)
{
int i = 2;
int min, max;
if (arr[0] > arr[1])
{
max = arr[0];
min = arr[1];
}
else
{
max = arr[1];
min = arr[0];
}
for (; i < arr_len; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
else if(arr[i] > max)
{
max = arr[i];
}
}
return (max - min);
}
int main()
{
int arr[] = {3, 9, 12, 1, 30, 100};
unsigned int arr_len = sizeof(arr)/sizeof(int);
unsigned int result;
result = max_difference(arr, arr_len);
printf("%u
", result);
return 0;
}