给定一个未排序的数组,求给定数组中任意对之间的最小差。 例如:
null
Input : {1, 5, 3, 19, 18, 25};Output : 1Minimum difference is between 18 and 19Input : {30, 5, 20, 9};Output : 4Minimum difference is between 5 and 9Input : {1, 19, -4, 31, 38, 25, 100};Output : 5Minimum difference is between 1 and -4
方法1(简单:O(n) 2. ) 一个简单的解决方案是使用两个循环。
C++
// C++ implementation of simple method to find // minimum difference between any pair #include <bits/stdc++.h> using namespace std; // Returns minimum difference between any pair int findMinDiff( int arr[], int n) { // Initialize difference as infinite int diff = INT_MAX; // Find the min diff by comparing difference // of all possible pairs in given array for ( int i=0; i<n-1; i++) for ( int j=i+1; j<n; j++) if ( abs (arr[i] - arr[j]) < diff) diff = abs (arr[i] - arr[j]); // Return min diff return diff; } // Driver code int main() { int arr[] = {1, 5, 3, 19, 18, 25}; int n = sizeof (arr)/ sizeof (arr[0]); cout << "Minimum difference is " << findMinDiff(arr, n); return 0; } |
JAVA
// Java implementation of simple method to find // minimum difference between any pair class GFG { // Returns minimum difference between any pair static int findMinDiff( int [] arr, int n) { // Initialize difference as infinite int diff = Integer.MAX_VALUE; // Find the min diff by comparing difference // of all possible pairs in given array for ( int i= 0 ; i<n- 1 ; i++) for ( int j=i+ 1 ; j<n; j++) if (Math.abs((arr[i] - arr[j]) )< diff) diff = Math.abs((arr[i] - arr[j])); // Return min diff return diff; } // Driver method to test the above function public static void main(String[] args) { int arr[] = new int []{ 1 , 5 , 3 , 19 , 18 , 25 }; System.out.println( "Minimum difference is " + findMinDiff(arr, arr.length)); } } |
Python3
# Python implementation of simple method to find # minimum difference between any pair # Returns minimum difference between any pair def findMinDiff(arr, n): # Initialize difference as infinite diff = 10 * * 20 # Find the min diff by comparing difference # of all possible pairs in given array for i in range (n - 1 ): for j in range (i + 1 ,n): if abs (arr[i] - arr[j]) < diff: diff = abs (arr[i] - arr[j]) # Return min diff return diff # Driver code arr = [ 1 , 5 , 3 , 19 , 18 , 25 ] n = len (arr) print ( "Minimum difference is " + str (findMinDiff(arr, n))) # This code is contributed by Pratik Chhajer |
C#
// C# implementation of simple method to find // minimum difference between any pair using System; class GFG { // Returns minimum difference between any pair static int findMinDiff( int []arr, int n) { // Initialize difference as infinite int diff = int .MaxValue; // Find the min diff by comparing difference // of all possible pairs in given array for ( int i = 0; i < n-1; i++) for ( int j = i+1; j < n; j++) if (Math.Abs((arr[i] - arr[j]) ) < diff) diff = Math.Abs((arr[i] - arr[j])); // Return min diff return diff; } // Driver method to test the above function public static void Main() { int []arr = new int []{1, 5, 3, 19, 18, 25}; Console.Write( "Minimum difference is " + findMinDiff(arr, arr.Length)); } } // This code is contributed by nitin mittal. |
PHP
<?php // PHP implementation of simple // method to find minimum // difference between any pair // Returns minimum difference // between any pair function findMinDiff( $arr , $n ) { // Initialize difference // as infinite $diff = PHP_INT_MAX; // Find the min diff by comparing // difference of all possible // pairs in given array for ( $i = 0; $i < $n - 1; $i ++) for ( $j = $i + 1; $j < $n ; $j ++) if ( abs ( $arr [ $i ] - $arr [ $j ]) < $diff ) $diff = abs ( $arr [ $i ] - $arr [ $j ]); // Return min diff return $diff ; } // Driver code $arr = array (1, 5, 3, 19, 18, 25); $n = sizeof( $arr ); echo "Minimum difference is " , findMinDiff( $arr , $n ); // This code is contributed by ajit ?> |
Javascript
<script> // JavaScript program implementation of simple method to find // minimum difference between any pair // Returns minimum difference between any pair function findMinDiff( arr, n) { // Initialize difference as infinite let diff = Number.MAX_VALUE; // Find the min diff by comparing difference // of all possible pairs in given array for (let i=0; i<n-1; i++) for (let j=i+1; j<n; j++) if (Math.abs((arr[i] - arr[j]) )< diff) diff = Math.abs((arr[i] - arr[j])); // Return min diff return diff; } // Driver Code let arr = [1, 5, 3, 19, 18, 25]; document.write( "Minimum difference is " + findMinDiff(arr, arr.length)); </script> |
输出:
Minimum difference is 1
方法2(有效:O(n logn) 这个想法是使用排序。以下是步骤。 1) 按升序对数组排序。这一步需要O(n logn)时间。 2) 将差异初始化为无穷大。这一步需要0(1)个时间。 3) 比较排序数组中的所有相邻对,并跟踪最小差异。这一步需要O(n)时间。 下面是上述想法的实现。
C++
// C++ program to find minimum difference between // any pair in an unsorted array #include <bits/stdc++.h> using namespace std; // Returns minimum difference between any pair int findMinDiff( int arr[], int n) { // Sort array in non-decreasing order sort(arr, arr+n); // Initialize difference as infinite int diff = INT_MAX; // Find the min diff by comparing adjacent // pairs in sorted array for ( int i=0; i<n-1; i++) if (arr[i+1] - arr[i] < diff) diff = arr[i+1] - arr[i]; // Return min diff return diff; } // Driver code int main() { int arr[] = {1, 5, 3, 19, 18, 25}; int n = sizeof (arr)/ sizeof (arr[0]); cout << "Minimum difference is " << findMinDiff(arr, n); return 0; } |
JAVA
// Java program to find minimum difference between // any pair in an unsorted array import java.util.Arrays; class GFG { // Returns minimum difference between any pair static int findMinDiff( int [] arr, int n) { // Sort array in non-decreasing order Arrays.sort(arr); // Initialize difference as infinite int diff = Integer.MAX_VALUE; // Find the min diff by comparing adjacent // pairs in sorted array for ( int i= 0 ; i<n- 1 ; i++) if (arr[i+ 1 ] - arr[i] < diff) diff = arr[i+ 1 ] - arr[i]; // Return min diff return diff; } // Driver method to test the above function public static void main(String[] args) { int arr[] = new int []{ 1 , 5 , 3 , 19 , 18 , 25 }; System.out.println( "Minimum difference is " + findMinDiff(arr, arr.length)); } } |
Python3
# Python program to find minimum difference between # any pair in an unsorted array # Returns minimum difference between any pair def findMinDiff(arr, n): # Sort array in non-decreasing order arr = sorted (arr) # Initialize difference as infinite diff = 10 * * 20 # Find the min diff by comparing adjacent # pairs in sorted array for i in range (n - 1 ): if arr[i + 1 ] - arr[i] < diff: diff = arr[i + 1 ] - arr[i] # Return min diff return diff # Driver code arr = [ 1 , 5 , 3 , 19 , 18 , 25 ] n = len (arr) print ( "Minimum difference is " + str (findMinDiff(arr, n))) # This code is contributed by Pratik Chhajer |
C#
// C# program to find minimum // difference between any pair // in an unsorted array using System; class GFG { // Returns minimum difference // between any pair static int findMinDiff( int [] arr, int n) { // Sort array in // non-decreasing order Array.Sort(arr); // Initialize difference // as infinite int diff = int .MaxValue; // Find the min diff by // comparing adjacent pairs // in sorted array for ( int i = 0; i < n - 1; i++) if (arr[i + 1] - arr[i] < diff) diff = arr[i + 1] - arr[i]; // Return min diff return diff; } // Driver Code public static void Main() { int []arr = new int []{1, 5, 3, 19, 18, 25}; Console.WriteLine( "Minimum difference is " + findMinDiff(arr, arr.Length)); } } //This code is contributed by anuj_67. |
PHP
<?php // PHP program to find minimum // difference between any pair // in an unsorted array // Returns minimum difference // between any pair function findMinDiff( $arr , $n ) { // Sort array in // non-decreasing order sort( $arr ); // Initialize difference // as infinite $diff = PHP_INT_MAX; // Find the min diff by // comparing adjacent // pairs in sorted array for ( $i = 0; $i < $n - 1; $i ++) if ( $arr [ $i + 1] - $arr [ $i ] < $diff ) $diff = $arr [ $i + 1] - $arr [ $i ]; // Return min diff return $diff ; } // Driver code $arr = array (1, 5, 3, 19, 18, 25); $n = sizeof( $arr ); echo "Minimum difference is " , findMinDiff( $arr , $n ); // This code is contributed ajit ?> |
Javascript
<script> // Javascript program to find minimum // difference between any pair // in an unsorted array // Returns minimum difference // between any pair function findMinDiff(arr, n) { // Sort array in // non-decreasing order arr.sort( function (a, b) { return a - b}); // Initialize difference // as infinite let diff = Number.MAX_VALUE; // Find the min diff by // comparing adjacent pairs // in sorted array for (let i = 0; i < n - 1; i++) if (arr[i + 1] - arr[i] < diff) diff = arr[i + 1] - arr[i]; // Return min diff return diff; } let arr = [1, 5, 3, 19, 18, 25]; document.write( "Minimum difference is " + findMinDiff(arr, arr.length)); </script> |
输出:
Minimum difference is 1
被问到: 亚马逊
本文由 哈希特·阿格拉瓦尔 。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请发表评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END