
sorts.QuickSort Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cloudgraph-common Show documentation
Show all versions of cloudgraph-common Show documentation
CloudGraph(tm) is a suite of Service Data Object (SDO) 2.1 services designed for relational and big-table style "cloud" databases, such as HBase and others.
package sorts;
/**
* QuickSort.java
* Created by Stijn Strickx on May 21, 2008
* Copyright 2008 Stijn Strickx, All rights reserved
*/
/**
* Quicksort algorithm
* Average Time Complexity: O(n log n)
* Worst Time Complexity: O(n*n)
* Memory Complexity: O(log n)
* Stable: no
*/
public class QuickSort extends Sorter{
@Override
public > void sort(T[] a) {
sort(a, 0, a.length-1);
}
private > void sort(T[] a, int s_low, int s_high) {
int low = s_low;
int high = s_high;
if(low == high-1){
if(a[low].compareTo(a[high]) > 0)
swap(a,low,high);
}
else if(low < high){
T pivot = a[(low+high)/2];
a[(low+high)/2] = a[high];
a[high] = pivot;
while(low < high){
while((a[low].compareTo(pivot) < 1) && (low < high))
low++;
while((pivot.compareTo(a[high]) < 1) && (low < high))
high--;
if(low < high)
swap(a,low,high);
}
a[s_high] = a[high];
a[high] = pivot;
sort(a,s_low,low-1);
sort(a,high+1,s_high);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy