added swapFloats to Vec.java
[org.ibex.core.git] / src / org / ibex / util / Vec.java
index e120be5..8bf8556 100644 (file)
@@ -180,4 +180,39 @@ public final class Vec implements Serializable {
             vec.store[b] = tmp;
         }
     }
+
+    public static final void sortInts(int[] a, int start, int end) {
+        int tmpa;
+        if(start >= end) return;
+        if(end-start <= 6) {
+            for(int i=start+1;i<=end;i++) {
+                tmpa = a[i];
+                int j;
+                for(j=i-1;j>=start;j--) {
+                    if(a[j] <= tmpa) break;
+                    a[j+1] = a[j];
+                }
+                a[j+1] = tmpa;
+            }
+            return;
+        }
+        int pivot = a[end];
+        int lo = start - 1;
+        int hi = end;
+        do {
+            while(a[++lo] < pivot) { }
+            while((hi > lo) && a[--hi] > pivot) { }
+            swapInts(a, lo, hi);
+        } while(lo < hi);
+        swapInts(a, lo, end);
+        sortInts(a, start, lo-1);
+        sortInts(a, lo+1, end);
+    }
+    private static final void swapInts(int[] vec, int a, int b) {
+        if(a != b) {
+            int tmp = vec[a];
+            vec[a] = vec[b];
+            vec[b] = tmp;
+        }
+    }
 }