1. 程式人生 > 其它 >找出陣列中的兩個元素x和y使得abs(x - y)值最小

找出陣列中的兩個元素x和y使得abs(x - y)值最小

技術標籤:# 演算法題

思路:

先對陣列進行排序,排序後的結果:a0 a1 a2 .... an

在{|a0-a1| |a1-a2| |a2-a3| .... |an-1-an|}中找到最小值

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>

int main()
{
	int A[20] = { 1,12,20,7,3,17,4 }; 
	int size = 7;
	for (int i = 0; i < size - 1; i++)//氣泡排序
	{
		for (int j = size - 1; j > i; j--)
		{
			if (A[j] < A[j - 1])
			{
				int t = A[j];
				A[j] = A[j - 1];
				A[j - 1] = t;
			}
		}
	}
	int min = abs(A[0] - A[1]);
	int x = A[0] , y = A[1];
	for (int i = 1; i < size-1; i++)
	{
		if (abs(A[i] - A[i + 1]) < min)
		{
			x = A[i];
			y = A[i + 1];
			min = abs(A[i] - A[i + 1]);
		}
	}
	printf("兩個元素是%d %d,最小值=%d\n" , x , y , min);
	return 0;
}