All pastes #376330 Raw Edit

Someone

public java v1 · immutable
#376330 ·published 2007-02-28 23:39 UTC
rendered paste body
import java.util.Random;	public class QuickSort {	public int[] medianQuickSort(int[] q) {	   int[] less, pivotList, greater;	   less = new  int[q.length];	   pivotList = new int[q.length];	   greater = new int[q.length];	   int pivotMedian;	   if(q.length <= 1) {	      return q;	   }	   pivotMedian=getMedian(q[0], q[q.length/2], q[q.length-1]);	   	   int li=0;	   int gi=0;	   for(int i=0; i<q.length; i++) {	      if(q[i] < q[pivotMedian]) {	         less[li++] = q[i];	      } else if(q[i] >= q[pivotMedian]) {	         greater[gi++] = q[i];	      }	   }	   return concatenate(randomQuickSort(less), null, randomQuickSort(greater));	}	private int getMedian(int a, int b, int c) {	   return Math.min(Math.max(a, b), Math.min(Math.max(a, c), Math.max(b, c)));	}	public int[] randomQuickSort(int[] q) {	   int[] less, pivotList, greater;	   less = new  int[q.length];	   pivotList = new int[q.length];	   greater = new int[q.length];	   int pivotIndex;	   if(q.length <= 1) {	      return q;	   }	   Random pivot = new Random();	   pivotIndex=pivot.nextInt(q.length);	   int li=0;	   int gi=0;	   for(int i=0; i<q.length; i++) {	      if(i != pivotIndex && q[i] < q[pivotIndex]) {	         less[li++] = q[i];	      } else if(i != pivotIndex && q[i] >= q[pivotIndex]) {	         greater[gi++] = q[i];	      }	   }	   pivotList[] = q[pivotIndex];	   return concatenate(randomQuickSort(less), pivotList, randomQuickSort(greater));	}		private int[] concatenate(int[] n1, int[] n2, int[] n3) {		int[] merger = new int[n1.length+n2.length+n3.length];		if(n1!=null) {			for(int i=0; i<n1.length; i++) {				merger[i] = n1[i];			}		}		if(n2!=null) {			for(int i=1; i<=n2.length; i++) {				merger[i+n1.length] = n2[i];			}		}		if(n3!=null) {			for(int i=1; i<=n3.length; i++) {				merger[i+n1.length+n2.length] = n3[i];			}		}		return merger;	}}