Advertisement
Velja_Programer

Metode sortiranja i trazenja

Mar 6th, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /* run this program using the console pauser or add your own getch, system("pause") or input loop */
  5. void sektral(const int a[],int n,int b);
  6. int  bintra (const int a[],int n, int b);
  7. void izbor1 (int a[],int n);
  8. void izbor2 (int a[],int n);
  9. void umet1  (int a[],int n);
  10. void umet2  (int a[],int n);
  11. void zamena (int a[],int n);
  12. void podela (int a[],int n);
  13.  
  14. int main(int argc, char *argv[]) {
  15.     int i,n,b,sekvencijalno,izb;
  16.     printf("Unesite duzinu niza \n");
  17.     scanf("%d",&n);
  18.     int niz[n];
  19.     printf("Unesite broj koji zelite da pronadjete \n");
  20.     scanf("%d",&b);
  21.     printf("Unesite elemente niza \n");
  22.     for(i=0;i<n;i++)
  23.     {
  24.         scanf("%d",&niz[i]);
  25.     }
  26.     sektral(niz,n,b);
  27.     if(bintra(niz,n,b)==1)printf("Trazeni broj je pronadjen(binarno)\n");
  28.     else printf("Trazeni broj nije pronadjen (binarno)\n");
  29.    
  30.      izbor1(niz,n);
  31.      izbor2(niz,n);
  32.      umet1(niz,n);
  33.      umet2(niz,n);
  34.      zamena(niz,n);
  35.      podela(niz,n);
  36.  
  37.    
  38.    
  39.     printf("\n \n Velja doktor programiranja ko obrise ovo taj je plagijator  \n \n");
  40.    
  41.     return 0;
  42.    
  43.    
  44. }
  45. void sektral(const int a[],int n,int b)
  46. {
  47.     int i;
  48.     for (i=0;i<n && a[i]!=b;i++);
  49.     if(i<n==0)printf("Trazeni broj nije pronadjen(sekvencijalno)\n");
  50.     else printf("Pronadjen je trazeni broj(sekvencijalno)\n");
  51. }
  52. int bintra (const int a[],int n, int b)
  53. {
  54.     int d=0,g=n-1,s;
  55.     while (d<=g)
  56. {
  57.     s=(d+g)/2;
  58.     if(a[s]==b)
  59.     //printf("Trazeni broj je nadjen(binarno)");
  60.     return 1;
  61.     else
  62.     if(a[s]>b)
  63.     g=s-1;
  64.     else
  65.     d=s+1;
  66.    
  67. }
  68. return 0;
  69. }
  70. void izbor1 (int a[],int n)
  71. {
  72.     int i,j,p;
  73.     for(i=0;i<n-1;i++)
  74.     for(j=i+1;j<n;j++)
  75.     if(a[j]<a[i])
  76.     {
  77.         p=a[i];
  78.         a[i]=a[j];
  79.         a[j]=p;
  80.     }
  81.     printf("\n \n Sortirani niz pomocu standardne metode izbora \n \n");
  82.     for(i=0;i<n;i++)
  83.     {
  84.         printf("%d",a[i]);
  85.     }
  86. }
  87. void izbor2(int a[],int n)
  88. {
  89.     int i,j,m,p;
  90.     for(i=0;i<n-1;i++){
  91.         for(m=i,j=i+1;j<n;j++)
  92.         if(a[j]<a[m]) m=j;
  93.         if (m !=i){
  94.             p=a[i];
  95.             a[i]=a[m];
  96.             a[m]=p;
  97.         }
  98.     }
  99.     printf(" \n \n Sortirani niz pomocu poboljsane metode izbora \n \n");
  100.     for(i=0;i<n;i++)
  101.     {
  102.         printf("%d",a[i]);
  103.     }
  104. }
  105. void umet1 (int a[],int n)
  106. {
  107.     int i,j,p;
  108.     for(i=1;i<n;i++)
  109.     for(j=i-1;j>=0 && a[j]>a[j+1];j--){
  110.         p=a[j];
  111.         a[j]=a[j+1];
  112.         a[j+1]=p;
  113.     }
  114.     printf("\n \n Sortirani niz pomocu standardne metode umetanja \n \n");
  115.     for(i=0;i<n;i++)
  116.     {
  117.         printf("%d",a[i]);
  118.     }
  119. }
  120. void umet2(int a[],int n)
  121. {
  122.     int i,j,p;
  123.     for(i=1;i<n;i++)
  124.     {
  125.         p=a[i];
  126.         for(j=i-1;j>=0 && a[j]>p;j--)
  127.         a[j+1]=a[j];
  128.         a[j+1]=p;
  129.     }
  130.     printf("\n \n Sortirani niz pomocu poboljsane metode umetanja \n \n");
  131.     for(i=0;i<n;i++)
  132.     {
  133.         printf("%d",a[i]);
  134.     }
  135. }
  136. void zamena (int a[],int n)
  137. {
  138.     int i,j,dalje,p;
  139.     for (dalje=1,i=0;i<n-1 && dalje;i++)
  140.         if (a[j-1]>a[j])
  141.         {
  142.             p=a[j-1];
  143.             a[j-1]=a[j];
  144.             a[j]=p;
  145.             dalje=1;
  146.         }
  147.         printf("\n \n Sortirani niz pomocu poboljsane metode umetanja \n \n");
  148.     for(i=0;i<n;i++)
  149.     {
  150.         printf("%d",a[i]);
  151.     }
  152. }
  153. void podela (int a[],int n){
  154.     int i,j,p;
  155.     if (n>1) {
  156.         i= -1; j=n-1;
  157.     while (1) {
  158.         do i++; while (a[i]<a[n-1]);
  159.         do j--; while (j>=0 && a[j]>a[n-1]);
  160.         if (i>=j) break;
  161.         p=a[i];a[i]=a[n-1];a[n-1]=p;
  162.         }
  163.         p=a[i]; a[i]=a[n-1];a[n-1]=p;
  164.         podela (a,i); podela (a+i+1,n-i-1);
  165.     }
  166.     printf("\n \n Sortirani niz pomocu metode podele \n \n");
  167.     for(i=0;i<n;i++)
  168.     {
  169.         printf("%d",a[i]);
  170.     }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement