CS3343/3341
 Analysis of Algorithms 
  Minimal  
  Quicksort  
  Implementation   


Quicksort Algorithm

This is a particularly simple "minimal" quicksort implementation in Java and in C.

Quicksort Algorithm
In JavaIn C
// Quicksort.java: carries out quicksort
public class Quicksort {



   void quicksort(int[] A, int p, int r) {

      if (p < r) {
         int q = partition(A, p, r);
         quicksort(A, p, q-1);
         quicksort(A, q+1, r);
       }
   }

   int partition(int[] A, int p, int r) {
      int x = A[r];
      int i = p - 1;

      for (int j = p; j < r; j++) {
         if (A[j] <= x) {
            i++;
            exchange(A, i, j);
         }
      }
      exchange(A, i+1, r);
      return i + 1;
   }

   void exchange(int[] A, int i, int j) {
      int temp = A[i];
      A[i] = A[j];
      A[j] = temp;
   }

   public static void main(String[] args){
      int[] A =
        {16,19,9,5,13,8,7,4,21,2,6,11,18};
      Quicksort q = new Quicksort();
      q.quicksort(A, 0, A.length-1);
      for (int i = 0; i < A.length; i++)
         System.out.print(A[i] + " ");
      System.out.println();
   }
}
// quicksort.c: carries out quicksort
#include <stdio.h>
int partition(int[], int, int );
void exchange(int[], int , int );
 
void quicksort(int A[], int p, int r){
   int q;
   if (p < r) {
      q = partition(A, p, r);
      quicksort(A, p, q-1);
      quicksort(A, q+1, r);
   }
}

int partition(int A[], int p, int r) {
   int x = A[r];
   int i = p - 1;
   int j;
   for (j = p; j < r; j++) {
      if (A[j] <= x) {
         i++;
         exchange(A, i, j);
      }
   }
   exchange(A, i+1, r);
   return i + 1;
}

void exchange(int A[], int i, int j) {
   int temp = A[i];
   A[i] = A[j];
   A[j] = temp;
}

int main() {
   int A[] =
    {16,19,9,5,13,8,7,4,21,2,6,11,18};
   int i;
   quicksort(A, 0, 12);
   for (i = 0; i < 13; i++)
      printf("%i ", A[i]);
   printf("\n");
}
Common Output
2 4 5 6 7 8 9 11 13 16 18 19 21


Revision date: 2012-09-16. (Please use ISO 8601, the International Standard Date and Time Notation.)