一、线性查找
package com.xianxing.array;
public class TestSearch {
public static void main(String[] args) {
int[] arr = new int[] { 2, 15, 3, 6, 4, 86, 96, 41 };
int target = 6;
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == target) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("找不到目标元素");
} else {
System.out.println("找到目标元素,下标为:" + index);
}
}
}
二、二分法查找
package com.xianxing.array;
public class TestBinarySearch {
public static void main(String[] args) {
int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int target = 0;
int begin = 0;
int end = arr.length - 1;
int mid = (begin + end) / 2;
int index = -1;
while (begin <= end) {
if (arr[mid] == target) {
index = mid;
break;
} else {
if (arr[mid] > target) {
end = mid - 1;
} else {
begin = mid + 1;
}
mid = (begin + end) / 2;
}
}
if (index == -1) {
System.out.println("找不到目标元素");
} else {
System.out.println("找到目标元素,下标为:" + index);
}
}
}
三、面向对象查找
package com.xianxing.array1;
import java.util.Arrays;
import javax.management.RuntimeErrorException;
public class MyArray {
private int[] elements;
public MyArray() {
elements = new int[0];
}
public int size() {
return elements.length;
}
public void add(int element) {
int newArr[] = new int[elements.length + 1];
for (int i = 0; i < elements.length; i++) {
newArr[i] = elements[i];
}
newArr[elements.length] = element;
elements = newArr;
}
public void show() {
System.out.println(Arrays.toString(elements));
}
public void delete(int index) {
if (index < 0 || index > elements.length - 1) {
throw new RuntimeException("下标越界");
}
int[] newArr = new int[elements.length - 1];
for (int i = 0; i < newArr.length; i++) {
if (i < index) {
newArr[i] = elements[i];
} else {
newArr[i] = elements[i + 1];
}
}
elements = newArr;
}
public int get(int index) {
if (index < 0 || index > elements.length - 1) {
throw new RuntimeException("下标越界");
}
return elements[index];
}
public void insert(int index, int element) {
if (index < 0 || index > elements.length - 1) {
throw new RuntimeException("下标越界");
}
int newArr[] = new int[elements.length + 1];
for (int i = 0; i < newArr.length - 1; i++) {
if (i < index) {
newArr[i] = elements[i];
} else {
newArr[i + 1] = elements[i];
}
}
newArr[index] = element;
elements = newArr;
}
public void set(int index, int element) {
if (index < 0 || index > elements.length - 1) {
throw new RuntimeException("下标越界");
}
elements[index] = element;
}
public int search(int target) {
for (int i = 0; i < elements.length; i++) {
if (elements[i] == target) {
return i;
}
}
return -1;
}
public int binarySearch(int target) {
int begin = 0;
int end = elements.length - 1;
while (begin <= end) {
int mid = (begin + end) / 2;
if (elements[mid] == target) {
return mid;
} else {
if (elements[mid] > target) {
end = mid - 1;
} else {
begin = mid + 1;
}
}
}
return -1;
}
}
package com.xianxing.array1;
public class MyArrayTest {
public static void main(String[] args) {
MyArray ma = new MyArray();
System.out.println("ma数组的长度:" + ma.size());
ma.show();
ma.add(3);
ma.add(6);
ma.add(99);
ma.add(95);
System.out.println("ma数组的长度:" + ma.size());
ma.show();
ma.delete(1);
ma.show();
System.out.println(ma.get(1));
ma.add(55);
ma.add(36);
ma.show();
ma.insert(3, 86);
ma.show();
ma.set(4, 64);
ma.show();
System.out.println("index:" + ma.search(86));
MyArray bs = new MyArray();
for (int i = 0; i <= 80; i = i + 5) {
bs.add(i);
}
bs.show();
System.out.println("index:" + bs.binarySearch(55));
}
}