Acwing算法基础课 (一)基础算法

基础算法

排序

快速排序(nlogn) 分治

  • 判断退出条件
  • 确定分界点 mid
  • 指针移动+交换
  • 递归

(边界问题,mid和递归的划分要对应,取不到出错)

归并排序(nlogn) 分治

  • 判断退出条件
  • 确定分界点 下标mid
  • 递归
  • 归并 合二为一 放到temp中
  • 存回原数组中

C++的sort()

快速排序+插入排序

二分

整数二分

二分保证一定有解,题目不一定有解

  • 写while
  • 取mid = (l + r) / 2
  • 写check函数
  • 看check函数决定l = mid还是r = mid(l=mid时候第一步+1)

浮点数二分

eg: 找平方根

  • 保留四位小数 精度 < 1e-6
  • 五位小数 1e-7
  • 六位小数 1e-8

高精度

A+B 10^6

  • 大整数存储:用vector存(小端)
  • 算每一位的和放到vector中
  • 当前位 %10,进位 /10
  • 最后要处理是否还有进位

A-B 10^6

A*a len(A) <= 10^6 a <= 10^9

A/B

持续更新中...代码模板最后奉上

你可能感兴趣的:(c++数据结构和算法)