diff options
Diffstat (limited to 'systemtap/org.eclipse.linuxtools.systemtap.structures/src/org/eclipse/linuxtools/systemtap/structures/Sort.java')
-rw-r--r-- | systemtap/org.eclipse.linuxtools.systemtap.structures/src/org/eclipse/linuxtools/systemtap/structures/Sort.java | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.structures/src/org/eclipse/linuxtools/systemtap/structures/Sort.java b/systemtap/org.eclipse.linuxtools.systemtap.structures/src/org/eclipse/linuxtools/systemtap/structures/Sort.java index 8d584fe853..4f38b31c20 100644 --- a/systemtap/org.eclipse.linuxtools.systemtap.structures/src/org/eclipse/linuxtools/systemtap/structures/Sort.java +++ b/systemtap/org.eclipse.linuxtools.systemtap.structures/src/org/eclipse/linuxtools/systemtap/structures/Sort.java @@ -21,12 +21,13 @@ public final class Sort { * @param r Recursed value, initially bottom value. */ public static void quicksort(Object[] list, int p, int r) { - if(null == list) + if(null == list) { return; - else if (p < r) { + } else if (p < r) { int q = partition(list,p,r); - if (q == r) + if (q == r) { q--; + } quicksort(list,p,q); quicksort(list,q+1,r); @@ -40,30 +41,35 @@ public final class Sort { * @param p Recursed value, initially top value. * @param r Recursed value, initially bottom value. */ + @SuppressWarnings({ "unchecked", "rawtypes" }) private static int partition (Object[] list, int p, int r) { Comparable pivot = (list[p] instanceof Comparable ? (Comparable)list[p] : list[p].toString()); int lo = p; int hi = r; while (true) { - while (getComparable(list[hi]).compareTo(pivot) >= 0 && lo < hi) + while (getComparable(list[hi]).compareTo(pivot) >= 0 && lo < hi) { hi--; + } - while (getComparable(list[lo]).compareTo(pivot) < 0 && lo < hi) + while (getComparable(list[lo]).compareTo(pivot) < 0 && lo < hi) { lo++; + } if (lo < hi) { Object T = list[lo]; list[lo] = list[hi]; list[hi] = T; - } else + } else { return hi; + } } } + @SuppressWarnings("rawtypes") private static Comparable getComparable(Object o) { return (o instanceof Comparable ? (Comparable)o - : o.toString()); + : o.toString()); } } |