1.算法复杂度、对数器

1. 算法复杂度

时间复杂度, O(1), O(N), O(logN), O(N * logN), O(N^2) 等
确定算法流程的总操作数量与样本数量之间的表达式关系只看表达式最高阶项的部分

常见的常数时间的操作

  • 常见的算术运算(+、-、*、/、%等)
  • 常见的位运算(>>、>>>、<<、|、&、^ 等)·赋值、比较、自增、自减操作等
  • 数组寻址操作
  • 总之,执行时间固定的操作都是常数时间的操作。
  • 反之,执行时间不固定的操作,都不是常数时间的操作

额外空间复杂度,O(1), O(N), O(N^2) 等
除了 入参和返回值之外,为了完成某个功能需要的额外空间。自主空间

最优解只要看 时间复杂度和空间复杂度

2. 对数器

对数器 是通过用大量测试数据来验证算法是否正确的一种方式。
分成三步

  1. 生成测试样本方法
  2. 写常规方法
  3. 对比自己的算法和常规算法的结果是否一致
public static void main(String[] args) {
        int maxSize = 10, maxVal = 100;
        for (int i = 0; i < 50_0000; i++) {
        	// 1. 生成测试样本方法
            int[] arr = SelectionSort.generateRandomArray(maxSize, maxVal);
            int[] arr1 = Utils.copyArray(arr);
            int[] arr2 = Utils.copyArray(arr);
            insertionSort(arr1);
            // 2. 常规方法结果
            SelectionSort.sort(arr2);
            // 3. 对比结果是否一样
            if (!Utils.compare(arr1, arr2)) {
                Utils.print(arr);
                Utils.print(arr1);
                Utils.print(arr2);
                break;
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值