Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define size 20
- void swap(int* a,int* b) {
- int temp;
- temp = *a;
- *a = *b;
- *b = temp;
- }
- void quicksort(int* tab, int i, int rozmiar){
- if(rozmiar <= 2){
- puts("returnuje");
- return;
- }
- //wybor elementu rozdzielajacego
- int middle_index = (rozmiar-1)/2;
- int middle_value = *(tab + i + middle_index);
- //show(tab);
- //swap middle elementu na ostatnia pozycje
- swap(tab+middle_index, tab+(rozmiar-1));
- //show(tab);
- //printf("middle %d\n", middle_index);
- printf("middle %d\n", middle_value);
- //show(tab);
- int j = i;
- //zamiana wartosci w tabicy
- for( ; i < rozmiar ; i++){
- int value = *(tab + i);
- if(value < middle_value){
- swap(tab + i, tab + j);
- j++;
- }
- }
- //piwot wraca
- swap(tab+(rozmiar-1), tab + j);
- show(tab);
- printf("j = %d\n", j);
- //quicksort tab1 i tab2
- quicksort(tab, i, j+1);
- quicksort(tab, j+1, rozmiar - (j+1));
- }
- void show(int* tab){
- for(int i = 0 ; i < size ; i++){
- printf("%d ", tab[i]);
- }
- puts("\n");
- }
- int main() {
- int tab[size] = {3, 6, 8, 4, 7, 2, 5, 7, 0, 2, 5, 4, 6, 7, 8, 9, 7 , 3, 2, 5};
- quicksort(tab, 0, 20);
- show(tab);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement