配列の中の最大の差あるいは最小の差を求めます


説明


長さ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; }