Advertisement
Velja_Programer

Sortiranje i trazenje sa odabirom by Velja

Mar 6th, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.60 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.     printf(
  31.     "1-metoda izbora \n"
  32.     "2-poboljsana metoda izbora \n"
  33.     "3-metoda umetanja \n"
  34.     "4-poboljsana metoda umetanja \n"
  35.     "5-metoda zamene \n"
  36.     "6-metoda podele \n "
  37.     "Unesite broj metode koju zelite da primenite:");
  38.     scanf("%d",&izb);
  39.     switch (izb)
  40.     {
  41.         case 1: izbor1 (niz,n); break;
  42.         case 2: izbor2 (niz,n); break;
  43.         case 3: umet1  (niz,n); break;
  44.         case 4: umet2  (niz,n); break;
  45.         case 5: zamena (niz,n); break;
  46.         case 6: printf("Sortirani niz pomocu metode podele: ");podela (niz,n);
  47.         for(i=0;i<n;i++) printf("%d ",niz[i]);break;
  48.         default: printf("GRESKA!\n");
  49.     }
  50.      
  51.    
  52.    
  53.     return 0;
  54.    
  55.    
  56. }
  57. void sektral(const int a[],int n,int b)
  58. {
  59.     int i;
  60.     for (i=0;i<n && a[i]!=b;i++);
  61.     if(i<n==0)printf("Trazeni broj nije pronadjen(sekvencijalno)\n");
  62.     else printf("Pronadjen je trazeni broj(sekvencijalno)\n");
  63. }
  64. int bintra (const int a[],int n, int b)
  65. {
  66.     int d=0,g=n-1,s;
  67.     while (d<=g)
  68. {
  69.     s=(d+g)/2;
  70.     if(a[s]==b)
  71.     //printf("Trazeni broj je nadjen(binarno)");
  72.     return 1;
  73.     else
  74.     if(a[s]>b)
  75.     g=s-1;
  76.     else
  77.     d=s+1;
  78.    
  79. }
  80. return 0;
  81. }
  82. void izbor1 (int a[],int n)
  83. {
  84.     int i,j,p;
  85.     for(i=0;i<n-1;i++)
  86.     for(j=i+1;j<n;j++)
  87.     if(a[j]<a[i])
  88.     {
  89.         p=a[i];
  90.         a[i]=a[j];
  91.         a[j]=p;
  92.     }
  93.     printf("\n \n Sortirani niz pomocu standardne metode izbora:");
  94.     for(i=0;i<n;i++)
  95.     {
  96.         printf("%d ",a[i]);
  97.     }
  98. }
  99. void izbor2(int a[],int n)
  100. {
  101.     int i,j,m,p;
  102.     for(i=0;i<n-1;i++){
  103.         for(m=i,j=i+1;j<n;j++)
  104.         if(a[j]<a[m]) m=j;
  105.         if (m !=i){
  106.             p=a[i];
  107.             a[i]=a[m];
  108.             a[m]=p;
  109.         }
  110.     }
  111.     printf(" \n \n Sortirani niz pomocu poboljsane metode izbora:");
  112.     for(i=0;i<n;i++)
  113.     {
  114.         printf("%d ",a[i]);
  115.     }
  116. }
  117. void umet1 (int a[],int n)
  118. {
  119.     int i,j,p;
  120.     for(i=1;i<n;i++)
  121.     for(j=i-1;j>=0 && a[j]>a[j+1];j--){
  122.         p=a[j];
  123.         a[j]=a[j+1];
  124.         a[j+1]=p;
  125.     }
  126.     printf("\n \n Sortirani niz pomocu standardne metode umetanja:");
  127.     for(i=0;i<n;i++)
  128.     {
  129.         printf("%d ",a[i]);
  130.     }
  131. }
  132. void umet2(int a[],int n)
  133. {
  134.     int i,j,p;
  135.     for(i=1;i<n;i++){
  136.         p=a[i];
  137.         for(j=i-1;j>=0 && a[j]>p;j--)
  138.         a[j+1]=a[j];
  139.         a[j+1]=p;
  140.     }
  141.     printf("\n \n Sortirani niz pomocu poboljsane metode umetanja:");
  142.     for(i=0;i<n;i++)
  143.     {
  144.         printf("%d ",a[i]);
  145.     }
  146. }
  147. void zamena (int a[],int n)
  148. {
  149.     int i,j,dalje,p;
  150.     for (dalje=1,i=0;i<n-1 && dalje;i++)
  151.         if (a[j-1]>a[j])
  152.         {
  153.             p=a[j-1];
  154.             a[j-1]=a[j];
  155.             a[j]=p;
  156.             dalje=1;
  157.         }
  158.         printf("\n \n Sortirani niz pomocu poboljsane metode zamene: ");
  159.     for(i=0;i<n;i++)
  160.     {
  161.         printf("%d ",a[i]);
  162.     }
  163. }
  164. void podela (int a[],int n){
  165.     int i,j,p,bozic;
  166.     if (n>1) {
  167.         i= -1; j=n-1;
  168.     while (1) {
  169.         do i++; while (a[i]<a[n-1]);
  170.         do j--; while (j>=0 && a[j]>a[n-1]);
  171.         if (i>=j) break;
  172.         p=a[i];a[i]=a[n-1];a[n-1]=p;
  173.         }
  174.         p=a[i]; a[i]=a[n-1];a[n-1]=p;
  175.         podela (a,i); podela (a+i+1,n-i-1);
  176.     }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement