Advertisement
leonard007

AA

Oct 17th, 2022
1,168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define N 100
  5.  
  6. int arr[N];
  7.  
  8. /*Linear seach return -1 if key is not found, otherwise it returns the index for key.*/
  9.  
  10. int linear_search(int key){
  11.  
  12.     int i;
  13.  
  14.     for(i=0;i<N;i++){
  15.  
  16.         if(arr[i]==key){
  17.  
  18.             return i;
  19.         }
  20.     }
  21.  
  22.     return -1;
  23. }
  24.  
  25. void sortare()
  26. {
  27.     int i, j, aux;
  28.     for (i = 0;i <= N;i++)
  29.     {
  30.         for (j = i;j < N;j++)
  31.         {
  32.             if (arr[i] > arr[j])
  33.             {
  34.                 aux = arr[i];
  35.                 arr[i] = arr[j];
  36.                 arr[j] = aux;
  37.             }
  38.         }
  39.     }
  40.  
  41. }
  42.  
  43. int cautare_binara(int l, int r, int x)
  44. {
  45.     if (r >= l) {
  46.         int mid = l + (r - l) / 2;
  47.  
  48.         if (arr[mid] == x)
  49.             return mid;
  50.         if (arr[mid] > x)
  51.             return cautare_binara(l, mid - 1, x);
  52.         return cautare_binara(mid + 1, r, x);
  53.     }
  54.     return -1;
  55. }
  56.  
  57. int main()
  58. {
  59.     //int arr[N];
  60.     int i, j;
  61.     int nr, pozitie, nr1,pozitie1;
  62.     int flag_end = 1;
  63.  
  64.     srand(time(NULL)); //pt a nu se repeta numerele pseudorandom
  65.  
  66.     for(i=0;i<N;i++){
  67.  
  68.         flag_end = 1;
  69.         while(flag_end){
  70.  
  71.             flag_end = 0; //false
  72.             nr = rand()%1000; //generare de numere intre 0 si 999
  73.  
  74.             for(j=0;j<N;j++){
  75.  
  76.                 if(arr[j] == nr){
  77.  
  78.                     flag_end = 1; //daca am gasit nr in array
  79.                 }
  80.             }
  81.  
  82.             if(!flag_end){
  83.  
  84.                 arr[i] = nr;
  85.                 break;
  86.             }
  87.         }
  88.     }
  89.  
  90.     /*for(i=0;i<N;i++){
  91.  
  92.         arr[i]=rand()%1000; //numere intre 0 si 999
  93.     }*/
  94.  
  95.  
  96.  
  97.     for(i=0;i<N;i++){
  98.  
  99.         printf("%d ", arr[i]);
  100.         //printf("\n");
  101.     }
  102.      printf("\nCautam liniar nr:");
  103.      scanf("%d", &nr);
  104.  
  105.      pozitie = linear_search(nr);
  106.  
  107.      if(pozitie == -1) printf("\n Numarul nu a fost gasit.");
  108.      else printf("\nNumarul se afla pe pozitia %d in arr", pozitie);
  109.      printf("\nLista sortata:\n");
  110.      sortare();
  111.      for(i=0;i<N;i++){
  112.  
  113.         printf("%d ", arr[i]);
  114.  
  115.     }
  116.  
  117.     printf("\nCautam binar nr:");
  118.      scanf("%d", &nr1);
  119.  
  120.     pozitie1 = cautare_binara(0, 99, nr1);
  121.  
  122.      if(pozitie1 == -1) printf("\nNr nu s-a gasit.");
  123.      else printf("\nNr s-a gasit pe pozitia %d",pozitie1);
  124.  
  125.     return 0;
  126. }
  127.  
  128.  
  129.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement