Advertisement
Guest User

Untitled

a guest
Oct 21st, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.80 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void swap(int* x, int* y);
  5. void qsort(int A[], int left, int right);
  6. int partition(int A[], int left, int right);
  7.  
  8.  
  9. int main(int argc, char *argv[]){
  10.     int A[8] = {7, 2, 1, 6, 8, 5, 3, 4};
  11.     qsort(A,0,7);
  12. }
  13.  
  14. void qsort(int A[], int left, int right){
  15.    
  16.     if (left>=right){
  17.         return;
  18.     }
  19.    
  20.     int p;
  21.     p = partition(A, left, right);
  22.  
  23.     qsort(A, left, p-1);
  24.     qsort(A, p+1, right);
  25. }
  26.  
  27. int partition(int A[], int left, int right){
  28.     int lm, rm;
  29.     lm = left+1;
  30.     rm = right;
  31.    
  32.     while(lm<=rm){
  33.        
  34.         while(A[lm] < A[left]){
  35.             lm++;
  36.         }
  37.        
  38.         while(A[rm] > A[left]){
  39.             rm--;
  40.         }
  41.        
  42.         if(lm<=rm){
  43.             swap(&A[lm], &A[rm]);
  44.         }
  45.     }
  46.     swap(&A[rm], &A[left]);
  47.     return rm;
  48. }
  49.  
  50. void swap(int* x, int* y){
  51.     int temp;
  52.    
  53.     temp = *x;
  54.     *x = *y;
  55.     *y = temp;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement