728x90

// quickSort
//
// This public-domain C implementation by Darel Rex Finley.
//
// * This function assumes it is called with valid parameters.
//
// * Example calls:
// quickSort(&myArray[0],5); // sorts elements 0, 1, 2, 3, and 4
// quickSort(&myArray[3],5); // sorts elements 3, 4, 5, 6, and 7

void quickSort(int *arr, int elements) {

#define MAX_LEVELS 300

int piv, beg[MAX_LEVELS], end[MAX_LEVELS], i=0, L, R, swap ;

beg[0]=0; end[0]=elements;
while (i>=0) {
L=beg[i]; R=end[i]-1;
if (L<R) {
piv=arr[L];
while (L<R) {
while (arr[R]>=piv && L<R) R--; if (L<R) arr[L++]=arr[R];
while (arr[L]<=piv && L<R) L++; if (L<R) arr[R--]=arr[L]; }
arr[L]=piv; beg[i+1]=L+1; end[i+1]=end[i]; end[i++]=L;
if (end[i]-beg[i]>end[i-1]-beg[i-1]) {
swap=beg[i]; beg[i]=beg[i-1]; beg[i-1]=swap;
swap=end[i]; end[i]=end[i-1]; end[i-1]=swap; }}
else {
i--; }}}

 

출처 : http://alienryderflex.com/quicksort/

728x90

'Algorithm' 카테고리의 다른 글

2차원 배열 회전  (0) 2013.04.16
퀵소트 문제  (0) 2013.04.07
DFS  (0) 2012.07.29
DLL INJECTION - 2  (0) 2012.07.29
DLL INJECTION - 1  (0) 2012.07.29

+ Recent posts