找出任意两个元素之间的最小差异

给定一个未排序的数组,求给定数组中任意对之间的最小差。 例如:

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
喜欢就支持一下吧
点赞5 分享