找出陣列中的兩個元素x和y使得abs(x - y)值最小
阿新 • • 發佈:2021-02-15
技術標籤:# 演算法題
思路:
先對陣列進行排序,排序後的結果: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; }