Advertisement
leomaster

qs (QuickSort oneliner)

Apr 8th, 2018
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.94 KB | None | 0 0
  1. /*
  2.  * code by fb.me/masterleo
  3.  * di.uoa.gr 10/08/2015
  4.  * gcc -O3 -o qs qs.c
  5.  *
  6.  * QuickSort Brainfuck
  7.  * >>+>>>>>,[>+>>,]>+[--[+<<<-]<[<+>-]<[<[->[<<<+>>>>+<-]<<[>>+>[->]<<[<]
  8.  * <-]>]>>>+<[[-]<[>+<-]<]>[[>>>]+<<<-<[<<[<<<]>>+>[>>>]<-]<<[<<<]>[>>[>>
  9.  * >]<+<<[<<<]>-]]+<<<]+[->>>]>>]>>[.>>>]
  10.  */
  11.  
  12. #include <stdlib.h>
  13. #include <stdio.h>
  14. #include <time.h>
  15.  
  16. #define N 100
  17.  
  18. qs(int *a,int o,int n) <%
  19.     return n<~n?n<:a:><*a&&a[n:>!=a<:++o]&&(a[n]^=a[o]^=a[n]^=a[o]),qs(a,o,-~n):n^n<~-n?o=n+qs(a+~-n,-n,-~-n),o<:a]!=a[~-n:>&&(a[o]^=a[~-n]^=a[o]^=a[~-n]),qs(a,o-o,o),qs(a+-~o,n%n,~-n-o):o;
  20. %>
  21.  
  22. main() {
  23.  
  24.     int n=N, *a = malloc (N * sizeof (int));
  25.     srand(time(NULL));
  26.  
  27.     while (n--) printf("%d ", a[n] = rand() % N);
  28.     puts("");
  29.     clock_t t1 = clock();
  30.    
  31.     qs(a, 0, n=N);
  32.    
  33.     clock_t t2 = clock();
  34.     puts("");
  35.     while (n--) printf("%d ",*a++);
  36.  
  37.     printf("\n%f seconds\n", ((double)(t2 - t1)) / CLOCKS_PER_SEC );
  38.  
  39.     return 0;
  40.  
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement