Advertisement
elektryk798

AiSD_lab3

Apr 19th, 2017
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void sortowanie(int *tab,int ile);
  5. int szukaniebinarne(int *tab,int right,int x);
  6.  
  7. int main()
  8. {
  9.     int i=0,ile,*tablica=NULL,szukanawartosc;
  10.     printf("ile elementow tabilcy?\n");
  11.     scanf("%d",&ile);
  12.     tablica=(int*)realloc(tablica,ile*sizeof(int));
  13.     printf("\nPodaj elementy tablicy: ");
  14.     for(i=0;i<ile;i++)
  15.         scanf("%d",tablica+i);
  16.     printf("\nPodaj szukana wartosc: ");
  17.     scanf("%d",&szukanawartosc);
  18.     sortowanie(tablica,ile);
  19.     for(i=0;i<ile;i++)
  20.         printf("%d ",*(tablica+i));
  21.     printf("\nIndeks szukanej wartosci: %d",szukaniebinarne(tablica,ile-1,szukanawartosc));
  22.     return 0;
  23. }
  24.  
  25. void sortowanie(int *tab,int ile)
  26. {
  27.     int i=0,j=0,tmp=0;
  28.     for(i=0;i<ile-1;i++)
  29.         for(j=0;j<ile-1;j++)
  30.             if(*(tab+j)>*(tab+j+1))
  31.             {
  32.                 tmp=*(tab+j);
  33.                 *(tab+j)=*(tab+j+1);
  34.                 *(tab+j+1)=tmp;
  35.             }
  36. }
  37. int szukaniebinarne(int *tab,int right,int x)
  38. {
  39.     int left=0,mid;
  40.     for(;;)
  41.     {
  42.         if(left>right)
  43.             return -1;
  44.         else
  45.         {
  46.             mid=(left+right)/2;
  47.             if(*(tab+mid)==x)
  48.                 return mid;
  49.             else
  50.             {
  51.                 if(*(tab+mid)<x)
  52.                     left=mid+1;
  53.                 else
  54.                     right=mid-1;
  55.             }
  56.         }
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement