Guest User

Untitled

a guest
May 21st, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.93 KB | None | 0 0
  1. package de.vogella.algorithms.sort.quicksort;
  2.  
  3.  
  4. public class Quicksort  {
  5.     private int[] numbers;
  6.     private int number;
  7.  
  8.     public void sort(int[] values) {
  9.         // Check for empty or null array
  10.         if (values ==null || values.length==0){
  11.             return;
  12.         }
  13.         this.numbers = values;
  14.         number = values.length;
  15.         quicksort(0, number - 1);
  16.     }
  17.  
  18.     private void quicksort(int low, int high) {
  19.         int i = low, j = high;
  20.         // Get the pivot element from the middle of the list
  21.         int pivot = numbers[low + (high-low)/2];
  22.  
  23.         // Divide into two lists
  24.         while (i <= j) {
  25.             while (numbers[i] < pivot) {
  26.                 i++;
  27.             }
  28.             while (numbers[j] > pivot) {
  29.                 j--;
  30.             }
  31.             if (i <= j) {
  32.                 exchange(i, j);
  33.                 i++;
  34.                 j--;
  35.             }
  36.         }
  37.         // Recursion
  38.         if (low < j)
  39.             quicksort(low, j);
  40.         if (i < high)
  41.             quicksort(i, high);
  42.     }
  43.     private void exchange(int i, int j) {
  44.         int temp = numbers[i];
  45.         numbers[i] = numbers[j];
  46.         numbers[j] = temp;
  47.     }
  48. }
Add Comment
Please, Sign In to add comment