Skip to content

Instantly share code, notes, and snippets.

@CarterA
Created June 30, 2010 05:36
Show Gist options
  • Save CarterA/458274 to your computer and use it in GitHub Desktop.
Save CarterA/458274 to your computer and use it in GitHub Desktop.
// Quicksort.
int pivot, beginning[MAX_LEVELS], end[MAX_LEVELS], i=0, left, right, swap;
beginning[0]=0; end[0]=ARRAY_LENGTH;
while (i>=0) {
left=beginning[i]; right=end[i]-1;
if (left < right) {
pivot=randoms.randomNumbers[left];
while (left < right) {
while (randoms.randomNumbers[right]>=pivot && left<right) right--; if (left<right) randoms.randomNumbers[left++]=randoms.randomNumbers[right];
while (randoms.randomNumbers[left]<=pivot && left<right) left++; if (left<right) randoms.randomNumbers[right--]=randoms.randomNumbers[left];
}
randoms.randomNumbers[left]=pivot; beginning[i+1]=left+1; end[i+1]=end[i]; end[i++]=left;
if (end[i]-beginning[i]>end[i-1]-beginning[i-1]) {
swap=beginning[i]; beginning[i]=beginning[i-1]; beginning[i-1]=swap;
swap=end[i]; end[i]=end[i-1]; end[i-1]=swap; }}
else {
i--;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment