Advertisement
Guest User

qSort

a guest
Jun 16th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.05 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. #define ARR_LGTH 100
  6.  
  7. void swap(int *a, int* b);
  8. void qSort(int *arr, int lBorder, int rBorder);
  9. int partition(int *arr, int l, int h);
  10.  
  11. int main(void) {
  12.     int sArr[ARR_LGTH];
  13.     for(int i = 0; i < ARR_LGTH; i++) {
  14.         sArr[i] = rand();
  15.     }
  16.  
  17.     qSort(sArr, 1, ARR_LGTH);
  18.     for(int i = 0; i < ARR_LGTH; i++) {
  19.         printf("%d\n", sArr[i]);
  20.     }
  21. }
  22.  
  23. void swap(int *a, int* b) {
  24.     int tmp = 0;
  25.     tmp = *a;
  26.     *a = *b;
  27.     *b = tmp;
  28. }
  29.  
  30. void qSort(int *arr, int lBound, int rBound) {
  31.     int p = 0;
  32.     if((rBound - lBound) > 0) {
  33.         p = partition(arr, lBound, rBound);
  34.         printf("Ref: %d\n", p);
  35.         qSort(arr, lBound, p - 1);
  36.         qSort(arr, p + 1, rBound);
  37.     }
  38. }
  39.  
  40. int partition(int *arr, int l, int h){
  41.     int p = arr[(l + h)/2];
  42.     int i = l - 1;
  43.     int j = h + 1;
  44.     while(1) {
  45.         while(p > arr[i]) { i++; }
  46.         while(p < arr[j]) { j--; }
  47.         if( i >= j) { return j; }
  48.         swap(&arr[i], &arr[j]);
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement