int m, l, f, k = 4;
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
f = 0;
l = a.length - 1;
m = (f + l) / 2;
for (int i = 0; i < a.length; i++) {
if(a[m] > k) {
f = 0;
l = m - 1;
}
if(a[m]<k) {
f = m + 1;
l = a.length - 1;
}
m = (f + l) / 2;
}
if(k == a[m]) {
System.out.println("found");
} else {
System.out.println("not found");
}
当我把k = 4和k = 6时,它说找不到。我可以知道什么位置需要正确吗
用这个:
int middle;
int right;
int left;
int k = 1;
int[] a = {1,2,3,4,5,6,7,8,9,10};
left = 0;
right = a.length - 1;
middle = (left + right)/2;
for (int i = 0; i < a.length; i++ ) {
if(a[middle] > k) {
right = middle - 1;
}
if(a[middle] < k) {
left = middle + 1;
}
middle=(left + right)/2;
}
if (k == a[middle]) {
System.out.println("found");
} else {
System.out.println("not found");
}
另外,您应该更加注意变量名。诸如此类i, k, m, a
的名称确实具有误导性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句