常用算法

二分查找

  • 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方法,通常用匿名内部类实现