1. 数组
● 面向对象: add 、insert 、get 、delete
● 查找算法:线性查找 (依次对比查找,效率低)、二分查找(前提是有序数组)
二分查找思路:
import java.util.Scanner;
public class BinarySearch {
public static void main(String[] args) {
//定义目标数组
int[] arr = {
1,2,3,4,5,6,7,8};
//记录初始、结束、中间位置
int begin = 0;
int end = arr.length-1;
int mid = (begin + end)/2;
System.out.println("请输入要查找的元素:");
Scanner scanner = new Scanner(System.in);
int target = scanner.nextInt();
int index = -1;
//循环查找元素
while (true){
if (target > arr[end] || target < arr[begin] ) {
throw new RuntimeException("输入的数不存在");
}
//中间元素刚好是要查找的元素
else if (arr[mid] == target) {
index = mid;
break;
} else {
//中间元素大于目标元素
if (arr[mid] > target) {
//调整结束的位置
end = mid - 1;
//中间元素小于目标元素
} else {
//调整开始位置
begin = mid + 1;
}
}
mid = (begin + end)/2;
}
System.out.println("要查找的元素:"+target+"\t"+"索引是:"+index);
}
}
执行结果:
图 1-1 运行结果截图
2. 栈
栈是一种基于先进后出策略的数据类型。就例如你在网上冲浪,点击一个超链接,浏览器会显示一个新的页面,并将它压入一个栈,你可以通过不断点击超链接来浏览新的页面,但总可以通过点击“回退”重新浏览以前的页面。栈的先进后出就是这样的原理。
public class StackDemo {
int[] elements