二分查找
- min和max表示要查找的范围
- min是在min和max中间
- 如果查找的范围是min的左边,max=mid-1
- 如果查找的范围是min的右边,min=mid+1
改进(插值查找):
分块查找
- 原则一:块内无序,块间有序
- 原则二:块数=数字个数开根
- 核心思路:先查找属于哪个块,然后在块内查找
冒泡排序
- 两两比较
- n-1轮,每轮找最大值
选择排序
- 从0索引开始,拿着每一个索引上的元素跟后面的元素依次比较,
必的放前面,大的放后面,以此类推;
插入排序
- 将0索引的元素到N索引的元素看做是有序的,把N+1索引的元素到最后一个当成是无序的;
- 遍历无序的数据,将遍历到的元素插入有序序列中适当的位置,如遇到相同数据,插在后面;
快速排序
- 第一轮:把0索引的数字作为基准数,确定基准数在数组中正确的位置,
比基准数小的全部在左边,比基准数大的全部在右边; - 先写end,后写start;
常见算法的API
Arrays
sort()方法只会给引用数据类型的数组排序,底层实现:插入排序+二分查找 需要重写Comparator接口的compare方法,通常用匿名内部类实现