Advertisement
dzieciol

flaga 3

Apr 6th, 2016
484
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.83 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.  
  6. int *tw_tab (int r){
  7.     int i;
  8.     int *wsk;
  9.     wsk=malloc(r*sizeof(int));
  10.     for (i=0;i<r;i++){
  11.         printf("t[%d]=",i+1);
  12.         scanf("%d",&wsk[i]);
  13.  
  14.     }
  15. return wsk;
  16. }
  17.  
  18. void BubbleSort(int *tab,int n){
  19.     int i,j,temp;
  20.      for(j=n-1;j>0;j--){
  21.         for(i=0;i<j;i++){
  22.             if(tab[i]>tab[i+1]){
  23.                 temp=tab[i];
  24.                 tab[i]=tab[i+1];
  25.                 tab[i+1]=temp;
  26.  
  27.             }
  28.  
  29.         }
  30.     }
  31. }
  32.  
  33. void InsertSort(int *tab,int n) {
  34.         int i,temp,j;
  35.         for (i=0;i<n;i++){
  36.     temp = tab[i];
  37.     j=i-1;
  38.     while (temp<=tab[j] && j>=0){
  39.         tab[j+1]=tab[j];
  40.         j--;
  41.     } tab[j+1]=temp;
  42. }
  43.     }
  44. void SelectionSort(int *tab,int n)
  45.     {
  46.         int i,j,temp;
  47.     int max;
  48. for (i=n;i>0;i--){
  49.     max=tab[i];
  50.     for (j=0;j<=i;j++)
  51. {
  52.   if (tab[j]>max){temp=max;max=tab[j];tab[j]=temp;}
  53. }tab[i]=max;
  54.    
  55.     }
  56. }
  57.  
  58. void QuickSort(int *tab,int p,int k){
  59.         int x=tab[p];
  60.         int i,j,temp;
  61.         i=p;
  62.         j=k;
  63.         do
  64.         {
  65.         while (tab[i] < x) i++;
  66.         while (tab[j] > x) j--;
  67.         if (i<=j){
  68.             temp=tab[i];
  69.             tab[i]=tab[j];
  70.             tab[j]=temp;
  71.             ++i;
  72.             --j;
  73.         }
  74.         }while(i<j);
  75.        
  76.        
  77.         if(p<j) QuickSort(tab,p,j);
  78.         if(k>i) QuickSort(tab,i,k);
  79.        
  80.     }
  81.     void bisekcja(int *tab,int sz, int l,int p){
  82.     int sr=(l+p)/2;
  83.     if(sz==tab[sr]) printf("szukany element znajduje się w tablicy na miejscu %d \n",sr+1);
  84.     else if(sz>tab[sr] && l<p){bisekcja(tab,sz,sr+1,p);}
  85.     else if(sz<tab[sr] && l<p)bisekcja(tab,sz,l,sr-1);
  86.     else printf("szukanego elementu niema w tablicy :( \n");   
  87.  
  88.    
  89.     }
  90.  
  91.  
  92.     void flaga(int *tab, int n){
  93.         int i=0;
  94.         int j=n-1;
  95.         int pom;
  96.         int a;
  97.         int b;
  98.         while (i<=j) {
  99.         while (tab[i]==0 && i<j) i++;
  100.         while (tab[j]==1 && i<j) j--;
  101.    
  102.             pom=tab[i];
  103.             tab[i]=tab[j];
  104.             tab[j]=pom;
  105.         i++;
  106.         j--;
  107.        
  108.     }
  109.  
  110.     }
  111.    
  112.     void swaap (int a, int b){
  113.         int x;
  114.         x=a;
  115.         a=b;
  116.         b=x;
  117.     }
  118.     void flaga3(int *tab, int n){
  119.         int n1=0;
  120.         int n2=1;
  121.         int n3=n;
  122.         int a,b;
  123.         int p;
  124.         int x;
  125.         while(n2<n3)
  126.         {
  127.             p=tab[n2];
  128.             if (p==0)
  129.             {
  130.             n1++;
  131.             x=tab[n1];
  132.             tab[n1]=tab[n2];
  133.             tab[n2]=x;
  134.             n2++;
  135.                
  136.             }
  137.             else if (p==1) n2++;
  138.             else {
  139.                 n3--;
  140.                 x=tab[n2];
  141.                 tab[n2]=tab[n3];
  142.                 tab[n3]=x;
  143.                
  144.             }
  145.         }
  146.        
  147.        
  148.     }
  149.  
  150. int main(int argc, char *argv[]) {
  151.     int n,temp;
  152.     printf("ile elementów chcesz wprowadzić i posortować ");
  153.     scanf("%d",&n);
  154.     int *tab_wsk;
  155.     tab_wsk=tw_tab(n);
  156.     //BubbleSort(tab_wsk,n);
  157.     //InsertSort(tab_wsk,n);
  158.     //SelectionSort(tab_wsk,n);
  159.     //QuickSort(tab_wsk,0,n);
  160.     //int zn;
  161.     //printf("podaj szukany element");
  162.     //scanf("%d",&zn);
  163.     //bisekcja(tab_wsk,zn,0,n);
  164.     int i;
  165.     flaga3(tab_wsk,n);
  166.     for(i=0;i<n;i++)
  167.     {
  168.         printf("%d \n",tab_wsk[i]);
  169.     }
  170.    
  171.     return 0;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement