X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Futil%2FVec.java;h=ffe7cfd592a577e943caace0a6ab5b68f5f08184;hb=fffcafc33aa4066bdf85da7a32e1a1cdb9db2d6f;hp=43ff43d44085b46dbd509963067cf7bcc45c98ed;hpb=a7119244e6186390d6093426b43ed321653e3575;p=org.ibex.core.git diff --git a/src/org/ibex/util/Vec.java b/src/org/ibex/util/Vec.java index 43ff43d..ffe7cfd 100644 --- a/src/org/ibex/util/Vec.java +++ b/src/org/ibex/util/Vec.java @@ -6,7 +6,6 @@ // relink clause") package org.ibex.util; - import java.io.*; /** @@ -196,11 +195,9 @@ public final class Vec implements Serializable { } return; } - int pivot = a[end]; int lo = start - 1; int hi = end; - do { while(a[++lo] < pivot) { } while((hi > lo) && a[--hi] > pivot) { } @@ -210,7 +207,6 @@ public final class Vec implements Serializable { 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]; @@ -419,4 +415,40 @@ public final class Vec implements Serializable { } } + + + public static final void sortFloats(float[] a, int start, int end) { + float 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; + } + float pivot = a[end]; + int lo = start - 1; + int hi = end; + do { + while(a[++lo] < pivot) { } + while((hi > lo) && a[--hi] > pivot) { } + swapFloats(a, lo, hi); + } while(lo < hi); + swapFloats(a, lo, end); + sortFloats(a, start, lo-1); + sortFloats(a, lo+1, end); + } + private static final void swapFloats(float[] vec, int a, int b) { + if(a != b) { + float tmp = vec[a]; + vec[a] = vec[b]; + vec[b] = tmp; + } + } }