算法(4)查找
在算法中查找有一种叫做线性查找:
分为:顺序查找
折半查找
查找有两种形态:
分为:破坏查找,比如查找一个数90 查到的第一个88那么把它移除,所以破坏结构
非破坏性查找
顺序查找:
非常简单,就是过一下数组,一个个的比较,找到为止。
java代码实现:
// 顺序查找
void SequenceSearch(int[] a, int i) {
for (int j = 0; j < a.length; j++) {
if (i == a[j]) {
return j;
}
}
return -1;
}
void SequenceSearch(int[] a, int i) {
for (int j = 0; j < a.length; j++) {
if (i == a[j]) {
return j;
}
}
return -1;
}
折半查找:前提条件
1.数组必须有序,
2.这种查找只限于线性的储存结构
// 折半查找
private static int BinaryrSearch(int[] a, int i) {
int low = 0;
int high = a.length - 1;
while (low <= high) {
int middle = (low + high) / 2;
if (a[middle] == i) {
return middle;
} else if (a[middle] > i) {
high = middle - 1;
} else {
low = middle + 1;
}
}
return -1;
}
private static int BinaryrSearch(int[] a, int i) {
int low = 0;
int high = a.length - 1;
while (low <= high) {
int middle = (low + high) / 2;
if (a[middle] == i) {
return middle;
} else if (a[middle] > i) {
high = middle - 1;
} else {
low = middle + 1;
}
}
return -1;
}
有一种查找是破坏性的,那么对于线性结构数据来说很悲惨,因为每一次破坏一下,都可能导致数组元素整体前移或者后移。所以线性结构的查找不适合做破坏性的操作。

浙公网安备 33010602011771号