comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Parameters.java @ 3027:52aac4941d2a

FixA: Added binary search methods for parameters. flys-artifacts/trunk@4596 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 05 Jun 2012 17:17:26 +0000
parents ab81ffd1343e
children 0b5a7a2c3724
comparison
equal deleted inserted replaced
3026:65b6e27c6f25 3027:52aac4941d2a
114 values[i] = index >= 0 && index < columns.length 114 values[i] = index >= 0 && index < columns.length
115 ? columns[index].getQuick(row) 115 ? columns[index].getQuick(row)
116 : Double.NaN; 116 : Double.NaN;
117 } 117 }
118 } 118 }
119
120 public int binarySearch(String columnName, double value) {
121 return binarySearch(columnIndex(columnName), value);
122 }
123
124 public int binarySearch(int columnIndex, double value) {
125 TDoubleArrayList column = columns[columnIndex];
126 return column.binarySearch(value);
127 }
128
129 public int binarySearch(String columnName, double value, double epsilon) {
130 return binarySearch(columnIndex(columnName), value, epsilon);
131 }
132
133 public int binarySearch(int columnIndex, double value, double epsilon) {
134 if (epsilon < 0d) epsilon = -epsilon;
135 double vl = value - epsilon;
136 double vh = value + epsilon;
137
138 TDoubleArrayList column = columns[columnIndex];
139 int lo = 0, hi = column.size()-1;
140 while (hi >= lo) {
141 int mid = (lo+hi) >> 1;
142 double v = column.getQuick(mid);
143 if (v < vl) hi = mid - 1;
144 else if (v > vh) lo = mid + 1;
145 else return mid;
146 }
147
148 return -1;
149 }
150
151 public boolean isSorted(String columnName) {
152 return isSorted(columnIndex(columnName));
153 }
154
155 public boolean isSorted(int columnIndex) {
156 TDoubleArrayList column = columns[columnIndex];
157 for (int i = 1, N = column.size(); i < N; ++i) {
158 if (column.getQuick(i-1) > column.getQuick(i)) {
159 return false;
160 }
161 }
162 return true;
163 }
119 } 164 }
120 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 165 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org