Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- smallest positive integer that does not occur.c
- Version with array sort using the qsort() function.
- Task:
- https://www.facebook.com/groups/cprogramming123/permalink/4468570053231257/
- You can find all my C programs at Dragan Milicev's pastebin:
- https://pastebin.com/u/dmilicev
- */
- #include <stdio.h>
- #include <stdlib.h>
- // Function to print array arr of n integers
- void PrintArray(char text[],int arr[],int n){
- int i;
- printf("%s",text);
- for(i=0;i<n;i++)
- printf("%5d", arr[i]);
- printf("\n\n");
- }
- //comparing function for quick sort
- int cmpfunc (const void *a, const void *b) {
- return ( *(int*)a - *(int*)b );
- }
- int solution( int arr[], int n){
- int i, num=0, max=0;
- for(i=0; i<n; i++){
- while(arr[i]<=0 && i<n-1){ // skip no positive values
- printf("\n skipped i=%2d arr[%d]= %2d arr[%d]= %2d max = %d \n", i, i, arr[i], i+1, arr[i+1], max);
- i++;
- }
- if( i<n && max<arr[i] ) // find current max integer
- max=arr[i];
- if ( i<n-1 ){
- printf("\n i=%2d arr[%d]= %2d arr[%d]= %2d max = %d \n", i, i, arr[i], i+1, arr[i+1], max);
- if( i<n-1 && arr[i+1]-arr[i]>1 ){
- num=max+1;
- break;
- }
- }
- }
- if( num<=0 )
- num=max+1;
- return num;
- }
- int main(){
- int arr[] = {1,3,6,4,1,2};
- // int arr[] = {1, 2, 3};
- // int arr[] = {-1, -3};
- // int arr[] = {-1, 2, -3};
- // int arr[] = {-1, 4, -3, 2};
- // int arr[] = {-1, 2, -3, 4};
- // int arr[] = {0, 0, 0, 0};
- int n=sizeof(arr)/sizeof(arr[0]);
- printf("\n n = %d \n", n);
- PrintArray("\n arr = ", arr, n);
- qsort( (void*)arr, n, sizeof(arr[0]), cmpfunc );
- PrintArray("\n sorted arr = ", arr, n);
- printf("\n\n Smallest positive integer that does not occur in arr is %d . \n\n", solution(arr,n) );
- return 0;
- }
Add Comment
Please, Sign In to add comment