什么是算法?
解决某个实际问题的过程和方法。
排序算法
1.冒泡排序
打印结果:
2.选择排序
打印结果:
优化选择排序:因为每一轮都需要以当前位置为基准与后面元素比较,太过繁琐,所以可以找到后面元素中较小值的索引,直接将找到的比当前小的最小值的索引拿出来,与当前索引的值调换位置即可。代码如下:
查找算法
二分查找
最好通过一个方法来完成!
public class Test3 {
public static void main(String[] args) {
//1.准备好一个数组
int[] arr = {7, 23, 79, 81, 103, 127, 131, 147};
System.out.println(binarySearch(arr, 81));
}
public static int binarySearch(int[] arr, int data) {
//1.定义两个变量一个在最左边位置,一个在最右边位置
int left = 0;
int right = arr.length - 1;
//2.定义一个循环控制折半
while (left <= right) {
//3.每次折半,都算出中间位置处的索引
int middle = (left + right) / 2;
//4.判断当前要找的元素值,与中间位置处的元素值的大小情况
if (data < arr[middle]) {
//往左边找,截至位置(右边) = 中间位置 - 1
right = middle - 1;
} else if (data > arr[middle]) {
//往右边找,起始位置(左边) = 中间位置 + 1
left = middle + 1;
} else {
return middle;
}
}
return -1;//-1特殊结果,代表没有找到数据!数据不存在该数组!
}
}
输出结果:3
Arrays类提供的Arrays.binarySeareh()方法
底层原理: