Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #define ARR_LGTH 100
- void swap(int *a, int* b);
- void qSort(int *arr, int lBorder, int rBorder);
- int partition(int *arr, int l, int h);
- int main(void) {
- int sArr[ARR_LGTH];
- for(int i = 0; i < ARR_LGTH; i++) {
- sArr[i] = rand();
- }
- qSort(sArr, 1, ARR_LGTH);
- for(int i = 0; i < ARR_LGTH; i++) {
- printf("%d\n", sArr[i]);
- }
- }
- void swap(int *a, int* b) {
- int tmp = 0;
- tmp = *a;
- *a = *b;
- *b = tmp;
- }
- void qSort(int *arr, int lBound, int rBound) {
- int p = 0;
- if((rBound - lBound) > 0) {
- p = partition(arr, lBound, rBound);
- printf("Ref: %d\n", p);
- qSort(arr, lBound, p - 1);
- qSort(arr, p + 1, rBound);
- }
- }
- int partition(int *arr, int l, int h){
- int p = arr[(l + h)/2];
- int i = l - 1;
- int j = h + 1;
- while(1) {
- while(p > arr[i]) { i++; }
- while(p < arr[j]) { j--; }
- if( i >= j) { return j; }
- swap(&arr[i], &arr[j]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement