#include #include #include #include #include #include #include void quickSort(int length, int *arr); int main(){ int n; scanf("%d",&n); int *a = malloc(sizeof(int) * n); for(int a_i = 0; a_i < n; a_i++){ scanf("%d",&a[a_i]); } // your code goes here quickSort(n, a); int answer = 1000000000; for (int i = 0; i < n-1; i++ ) { if (answer == 0) break; if (abs(a[i]- a[i+1]) < answer) answer = abs(a[i]- a[i+1]); } printf("%d\n", answer); return 0; } /******************* Quick Sort ******************/ void swap(int i, int j, int *arr) { int h = arr[i]; arr[i] = arr[j]; arr[j] = h; } int partition(int length, int *arr) { int left = 0; int right = length; int pivot = arr[0]; while (left < right) { while ((left < right) && (arr[left] <= pivot)) { left++; } while ((left < right) && (pivot < arr[right-1])) { right--; } if (left < right) { /* (arr[left] > pivot) && (arr[right-1] <= pivot) : swap */ right--; swap(left, right, arr); left++; } } /* put pivot in right location: swap(0,left-1,arr) */ left--; arr[0] = arr[left]; arr[left] = pivot; return left; } void quickSort(int length, int *arr) { int boundary; if (length <= 1) { return; /* empty or singleton array: nothing to sort */ } boundary = partition(length, arr); quickSort(boundary, arr); quickSort(length - boundary - 1, &arr[boundary + 1]); }