排序算法
冒泡排序
- 需要 array.length-1 轮的比较,可以通过优化标识来减少比较的次数,时间复杂度O(n^2)
1 | public void bubbleSort(int[] array){ |
快速排序
思路:
- 1.先从数列中取出一个数作为基准数。
- 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
- 3.再对左右区间重复第二步,直到各区间只有一个数。

1 | public void quickSort(int[] array, int i, int j){ |
查找算法
二分查找
必须是有序数组
1 | public int binarySearch(int[] array, int target){ |
变种:二分查找找最左
可以用来查找相同元素的个数

1 | public int binarySearchForLeft(int[] array, int target){ |
注意:为了验证有没有查找到,需要在调用端判断一下返回位置上的值和 key 是否相等
