⌨️算法模板(Java版)_排序和二分
2024-8-6
| 2024-9-10
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
@ZZHow(ZZHow1024)

排序

快速排序

💡
快速排序 - 分治:
  1. 确定分界点:int x = q[l + r >> 1];
  1. 调整区间,左边 ≤ x,右边 ≥ x。
  1. 递归处理左右两段。

归并排序

💡
归并排序 - 分治
  1. 确定分界点:int mid = l + r >> 1;
  1. 递归排序 l 和 r。
  1. 归并,合二为一。

选择排序

💡
选择排序:
  1. 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  1. 从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  1. 重复第二步,直到所有元素均排序完毕。

冒泡排序

💡
冒泡排序:
  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  1. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  1. 针对所有的元素重复以上的步骤,除了最后一个。
  1. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

二分

整数的二分

💡
本质:边界
  • 模版一:check 满足左半边的性质:
      1. int mid = l + r + 1 >> 1;
      1. if(checkMid)
        1. true: [mid, r];
        2. false: [l, mid - 1];
  • 模版二:check 满足右半边的性质:
      1. int mid = l + r >> 1;
      1. if(checkMid)
        1. true: [l, mid];
        2. false: [mid + 1, r];

实数的二分

  • 算法
  • Java
  • 学技术
  • 算法模板(Java版)_非负整数的高精度运算Java项目-苍穹外卖_Day3-Day4
    Loading...
    目录