Advertisement
Mazamin

quick_sort

Oct 3rd, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.26 KB | None | 0 0
  1. /*
  2.  * File:   main.c
  3.  * Author: Gerardo Cicalese
  4.  *
  5.  * Created on 16 settembre 2019, 15.48
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10.  
  11. void print_vex(int * vex, int len){
  12.     if(len<1)
  13.         return;
  14.     printf("%d ", *vex);
  15.     print_vex(vex+1, len-1);
  16. }
  17.  
  18. void swap_int(int * a, int * b){
  19.     *a=*a+*b-(*b=*a);
  20. }
  21.  
  22. int partition(int * a, int left, int right){
  23.     int var=0, pivot=a[right]; /* pivot is last element */
  24.     while(var<=right){
  25.         if(a[var]<pivot){
  26.             swap_int(a+var,a+left);
  27.             ++var;
  28.             ++left;
  29.         }
  30.         else if(a[var]>pivot){
  31.             swap_int(a+var,a+right); /* we don't increase var cause we don't know */
  32.             --right;               /* if the swapped element is smaller this time */
  33.         }
  34.         else
  35.             ++var;
  36.     }
  37.     return left-1; /* indexes of elements with pivot value is [left-1; right] */
  38. }
  39.  
  40. void quick_sort(int * vex, int left, int right){
  41.     if( left >= right )
  42.         return;
  43.     int pivot=partition(vex, 0, right);
  44.     quick_sort(vex, 0, pivot);
  45.     quick_sort(vex, pivot+1, right);
  46. }
  47.  
  48. int main(void){
  49.     int array[10]={23, 62, 15, 97, 35, 78, 34, 89, 13, 57};
  50.     quick_sort(array, 0, 9);
  51.     print_vex(array, 10);
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement