在 C++ 中查詢任何兩個元素之間的最小差


假設我們有一個包含 n 個元素的陣列 A。我們需要找出該陣列中任意兩個元素之間的最小差。比如,A = [30,5,20,9],那麼結果將是 4。它是元素 5 和 9 之間的最小距離。

要解決這個問題,我們需要遵循以下步驟:

  • 按非遞減順序對陣列進行排序

  • 將差值初始化為無窮大

  • 比較已排序陣列中的所有相鄰對,並記錄最小值

示例

#include<iostream>
#include<algorithm>
using namespace std;
int getMinimumDifference(int a[], int n) {
   sort(a, a+n);
   int min_diff = INT_MAX;
   for (int i=0; i<n-1; i++)
      if (a[i+1] - a[i] < min_diff)
         min_diff = a[i+1] - a[i];
   return min_diff;
}
int main() {
   int arr[] = {30, 5, 20, 9};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Minimum difference between two elements is: " << getMinimumDifference(arr, n);
}

輸出

Minimum difference between two elements is: 4

更新於: 19-12-2019

615 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

開始
廣告