X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fnestedvm%2Futil%2FSort.java;h=79fe029f3c514bc3dc7e531c1e28b2db5d9221ca;hp=a2bba16eaf1bafb18b1cd94a6165be2227ff7003;hb=b11e7c6c29f2b5f7b0828bf93eb741c4a30ec411;hpb=6c6b7ed7f96818b3eb0b29e3d8ca78b93400c303 diff --git a/src/org/ibex/nestedvm/util/Sort.java b/src/org/ibex/nestedvm/util/Sort.java index a2bba16..79fe029 100644 --- a/src/org/ibex/nestedvm/util/Sort.java +++ b/src/org/ibex/nestedvm/util/Sort.java @@ -2,17 +2,17 @@ package org.ibex.nestedvm.util; public final class Sort { private Sort() { } - + public interface Comparable { public int compareTo(Object o); } public interface CompareFunc { public int compare(Object a, Object b); } - + private static final CompareFunc comparableCompareFunc = new CompareFunc() { public int compare(Object a,Object b) { return ((Comparable)a).compareTo(b); } }; - + public static void sort(Comparable[] a) { sort(a,comparableCompareFunc); } public static void sort(Object[] a, CompareFunc c) { sort(a,c,0,a.length-1); } - + private static void sort(Object[] a, CompareFunc c, int start, int end) { Object tmp; if(start >= end) return; @@ -28,19 +28,19 @@ public final class Sort { } return; } - + Object pivot = a[end]; int lo = start - 1; int hi = end; - + do { while((lo < hi) && c.compare(a[++lo],pivot) < 0) { } while((hi > lo) && c.compare(a[--hi],pivot) > 0) { } tmp = a[lo]; a[lo] = a[hi]; a[hi] = tmp; } while(lo < hi); - + tmp = a[lo]; a[lo] = a[end]; a[end] = tmp; - + sort(a, c, start, lo-1); sort(a, c, lo+1, end); }