Find minimum difference between any two elements - GeeksforGeeks

21 Jan, 2022
Given an unsorted array, find the minimum difference between any pair in given array.Examples :
Input  : {1, 5, 3, 19, 18, 25};
Output : 1
Minimum difference is between 18 and 19

Input  : {30, 5, 20, 9};
Output : 4
Minimum difference is between 5 and 9

Input  : {1, 19, -4, 31, 38, 25, 100};
Output : 5
Minimum difference is between 1 and -4
 
Method 1 (Simple: O(n2) A simple solution is to use two loops.  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of simple method to find// minimum difference between any pair#include <bits/stdc++.h>using namespace std; // Returns minimum difference between any pairint findMinDiff(int arr[], int n){// Initialize difference as infiniteint diff = INT_MAX; // Find the min diff by comparing difference// of all possible pairs in given arrayfor (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 diffreturn diff;} // Driver codeint 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 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));         }}
# Python implementation of simple method to find# minimum difference between any pair # Returns minimum difference between any pairdef 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 codearr = [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# implementation of simple method to find// minimum difference between any pairusing 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 implementation of simple// method to find minimum// difference between any pair // Returns minimum difference// between any pairfunction findMinDiff($arr, $n){// Initialize difference// as infinite$diff = PHP_INT_MAX; // Find the min diff by comparing// difference of all possible// pairs in given arrayfor ($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 diffreturn $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?>
<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>
Output :
Minimum difference is 1
  Method 2 (Efficient: O(n Log n) The idea is to use sorting. Below are steps. 1) Sort array in ascending order. This step takes O(n Log n) time. 2) Initialize difference as infinite. This step takes O(1) time. 3) Compare all adjacent pairs in sorted array and keep track of minimum difference. This step takes O(n) time.Below is implementation of above idea. 
C++
Java
Python3
C#
PHP
Javascript
// 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 pairint 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 codeint 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 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));         }}
# Python program to find minimum difference between# any pair in an unsorted array # Returns minimum difference between any pairdef 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 codearr = [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# program to find minimum// difference between any pair// in an unsorted arrayusing 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 program to find minimum// difference between any pair// in an unsorted array // Returns minimum difference// between any pairfunction findMinDiff($arr, $n){     // Sort array in// non-decreasing ordersort($arr); // Initialize difference// as infinite$diff = PHP_INT_MAX; // Find the min diff by// comparing adjacent// pairs in sorted arrayfor ($i = 0; $i < $n - 1; $i++)    if ($arr[$i + 1] - $arr[$i] < $diff)        $diff = $arr[$i + 1] - $arr[$i]; // Return min diffreturn $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?>
<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>
Output : 
Minimum difference is 1
 
YouTubeGeeksforGeeks507K subscribersFind minimum difference between any two elements | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.You're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmMore videosMore videosSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 8:02•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=Cr20pvlhqBU" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
 
This article is contributed by Harshit Agrawal. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
nitin mittal
vt_m
jit_t
chinmoy1997pal
divyesh072019
amartyaniel20
Amazon
Arrays
Sorting
Amazon
Arrays
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Arrays in Java
Arrays in C/C++
Write a program to reverse an array or string
Program for array rotation
Largest Sum Contiguous Subarray