Mega Code Archive

 
Categories / Java / Collections Data Structure
 

Simple version of quick sort

public class QuickSortSimpleVersion {   private long[] data;   private int len;   public QuickSortSimpleVersion(int max) {     data = new long[max];     len = 0;   }   public void insert(long value) {     data[len] = value;      len++;   }   public void display() {     System.out.print("Data");     for (int j = 0; j < len; j++)       System.out.print(data[j] + " ");     System.out.println("");   }   public void quickSort() {     recQuickSort(0, len - 1);   }   public void recQuickSort(int left, int right) {     if (right - left <= 0) // if size <= 1 already sorted       return;     else // size is 2 or larger     {       long pivot = data[right]; // rightmost item       // partition range       int partition = partitionData(left, right, pivot);       recQuickSort(left, partition - 1); // sort left side       recQuickSort(partition + 1, right); // sort right side     }   }   public int partitionData(int left, int right, long pivot) {     int leftPtr = left - 1; // left (after ++)     int rightPtr = right; // right-1 (after --)     while (true) { // find bigger item       while (data[++leftPtr] < pivot)         ;       // find smaller item       while (rightPtr > 0 && data[--rightPtr] > pivot)         ;       if (leftPtr >= rightPtr) // if pointers cross, partition done         break;       else         swap(leftPtr, rightPtr);     }     swap(leftPtr, right); // restore pivot and return pivot location     return leftPtr;   }   public void swap(int d1, int d2) {     long temp = data[d1];     data[d1] = data[d2];     data[d2] = temp;   }   public static void main(String[] args) {     int maxSize = 16; // array size     QuickSortSimpleVersion arr = new QuickSortSimpleVersion(maxSize); // create array     for (int j = 0; j < maxSize; j++) // fill array with random numbers     {       long n = (int) (java.lang.Math.random() * 99);       arr.insert(n);     }     arr.display();     arr.quickSort();     arr.display();   } }