算法图解笔记 - 算法简介
-
算法简介
- 二分查找到速度比简单查找快得多
- O(log n)比O(n)快。需要搜索的元素越多,前者比后者就快得越多
- 算法运行时间并不以秒为单位
- 算法运行时间是从其增速的角度度量的
- 算法运行时间用大O表示法表示
二分查找
-
O(log n),也叫对数时间,这样的算法包括二分查找。
-
O(n),也叫线性时间,这样的算法包括简单查找。
-
O(n * log n),这样的算法包括第4章将介绍的快速排序——一种速度较快的排序算法。
-
O(n2),这样的算法包括第2章将介绍的选择排序——一种速度较慢的排序算法。
-
O(n!),这样的算法包括接下来将介绍的旅行商问题的解决方案——一种非常慢的算法。
数组和链表的操作的运行时间
操作 数组 链表 读取 O(1) O(n) 插入 O(n) O(1) 删除 O(n) O(1) 选择排序
将一组数按照从大到小的顺序排序
算法运行时间O(n*1/2*n)
,但大O表示法省略诸如1/2这样的常数,因此简单的写作O(n*n)
数组和链表总结
- 计算机内存犹如一大堆抽屉
- 需要存储多个元素时,可使用数组或链表
- 数组的元素都在一起
- 链表的元素时分开的,其中每个元素都存储了下一个元素的地址
- 数组的读取速度很快
- 链表的插入和删除速度很快
- 在同一个数组中,所有元素的类型都必须(都为int或doubl
· 糊涂啊!这个需求居然没想到用时间轮来解决。
· 浅谈为什么我讨厌分布式事务
· 在 .NET 中使用内存映射文件构建高性能的进程间通信队列
· 一个 java 空指针异常的解决过程
· 揭开 SQL Server 和 PostgreSQL 填充因子的神秘面纱
· 15天流量破10万,免费拼图工具的毕业典礼是被抄袭
· 从硬盘爆满到 GitHub 封号,一位前端开发者的开源历险记
· .NET 使用 DocNET 库快速高效的操作 PDF 文档
· 微软又一自动化开源王炸,Selenium 慌了!
· 分享一个 ProHub 风格 logo 生成器