静态查找结构主要有两种:顺序查找、折半查找
public
int
shunXuSearch(
int
[] b,
int
c) {
for
(
int
i = 0; i < b.
length
; i++) {
if
(b[i] == c) {
System.
out
.println(
"查到了您想要的结果"
+ c +
",位置在:"
+ i);
return
i;
}
}
System.
out
.println(
"sorry!没有查询到您想要的结果!"
);
return
-1;
}
二、折半查找、二分查找:这个需要查找对象是有序的,每一次都找1/2的部分,查找次数大大的减少了。时间复杂度是O(logN)。
折半查找其实就是一颗二叉树的遍历,其中,中间的元素就是二叉树的根。这里有个问题,如果这个根一年半载才查找一次,而这棵树的叶子需要1秒钟就查找一次,那么这种折半查找是否还有效率呢?就很坑了吧。所以才有了后面的集中查找算法。另外,如果想要添加、或者删除一个数据的时候,整个结构都需要重建,这个代价是不可估量的。
public
int
binarySearch(
int
[] b,
int
c) {
// 这里需要先排序,假设已经是有序的数组了
int
low = 0;
int
high = b.
length
- 1;
int
middle;
while
(low <= high) {
middle = (high + low) / 2;
if
(c == b[middle]) {
System.
out
.println(
"您要找的结果"
+ c +
"已经找到,位置在:"
+ middle);
return
middle;
}
else
if
(c > b[middle]) {
low = middle + 1;
}
else
if
(c < b[middle]) {
high = middle - 1;
}
}
System.
out
.println(
"sorry!这里没有您想要的结果!"
);
return
-1;
}