Advertisement
Guest User

kurwahuj

a guest
Apr 22nd, 2018
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #define size 20
  3.  
  4. void swap(int* a,int* b) {
  5.     int temp;
  6.     temp = *a;
  7.     *a = *b;
  8.     *b = temp;
  9. }
  10.  
  11. void quicksort(int* tab, int i, int rozmiar){
  12.  
  13.     if(rozmiar <= 2){
  14.         puts("returnuje");
  15.         return;
  16.     }
  17.  
  18.     //wybor elementu rozdzielajacego
  19.     int middle_index = (rozmiar-1)/2;
  20.     int middle_value = *(tab + i + middle_index);
  21.  
  22.     //show(tab);
  23.  
  24.     //swap middle elementu na ostatnia pozycje
  25.     swap(tab+middle_index, tab+(rozmiar-1));
  26.  
  27.     //show(tab);
  28.  
  29.     //printf("middle %d\n", middle_index);
  30.     printf("middle %d\n", middle_value);
  31.     //show(tab);
  32.     int j = i;
  33.  
  34.     //zamiana wartosci w tabicy
  35.     for(  ; i < rozmiar ; i++){
  36.         int value = *(tab + i);
  37.  
  38.         if(value < middle_value){
  39.             swap(tab + i, tab + j);
  40.             j++;
  41.         }
  42.     }
  43.  
  44.     //piwot wraca
  45.     swap(tab+(rozmiar-1), tab + j);
  46.  
  47.     show(tab);
  48.     printf("j = %d\n", j);
  49.  
  50.     //quicksort tab1 i tab2
  51.     quicksort(tab, i, j+1);
  52.     quicksort(tab, j+1, rozmiar - (j+1));
  53.  
  54. }
  55.  
  56. void show(int* tab){
  57.     for(int i = 0 ; i < size ; i++){
  58.         printf("%d ", tab[i]);
  59.     }
  60.     puts("\n");
  61. }
  62.  
  63. int main() {
  64.  
  65.     int tab[size] = {3, 6, 8, 4, 7, 2, 5, 7, 0, 2, 5, 4, 6, 7, 8, 9, 7 , 3, 2, 5};
  66.  
  67.     quicksort(tab, 0, 20);
  68.  
  69.     show(tab);
  70.  
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement