Advertisement
BeTmAsTeR

IntersezioneArrayOrdinati

Mar 21st, 2013
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int stL(char* str);
  6. int occ (int* arr1, int dim1, int* arr2, int dim2);
  7. int binSearch (int* arr1,int num, int sx, int dx);
  8.  
  9. int occ (int* arr1, int dim1, int* arr2, int dim2)
  10. {
  11.     int k;
  12.     int occ=0;
  13.  
  14.     for (k=0;k<dim2;k++)
  15.         occ+=binSearch(arr2,arr1[k],0,dim1);
  16. return occ;
  17. }
  18.  
  19. int binSearch (int* arr1, int num,int sx,int dx)
  20. {
  21.     int cx=(sx+dx)/2;
  22.  
  23.     if(sx > dx)
  24.         return -1;
  25.     if (sx==dx)
  26.         if (arr1[sx]==num)
  27.             return 1;
  28.         else
  29.             return 0;
  30.     if (arr1[cx] == num) return 1;
  31.     if (num<arr1[cx])
  32.         return binSearch(arr1,num,sx,cx-1);
  33.     else
  34.         return binSearch(arr1,num,cx+1,dx);
  35. }
  36.  
  37. int main()
  38. {
  39.     int dim1;
  40.     int dim2;
  41.     int i;
  42.     int* arr1;
  43.     int* arr2;
  44.  
  45.     scanf("%d",&dim1);
  46.     arr1 = (int*)malloc(sizeof(int)*dim1);
  47.     for(i=0;i<dim1;i++)
  48.         scanf("%d",&arr1[i]);
  49.  
  50.     scanf("%d",&dim2);
  51.     arr2 = (int*)malloc(sizeof(int)*dim2);
  52.     for(i=0;i<dim2;i++)
  53.         scanf("%d",&arr2[i]);
  54.  
  55.     printf("%d\n",occ(arr1,dim1,arr2,dim2));
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement