算法入门
2023-09-14 09:00:17 时间
很多学过算法的童鞋,都觉得老师讲的算法里面排序占有很大的比例,可以说排序是算法的重点,这是为什么呢?
原因是,很大部分的算法仅在数据经过排序后才管用,例如我们最经典的二分查找。
首先先介绍下最基本的两种数据类型:数组和链表
数组:是内存相邻的一个队列
链表:内存不相邻的队列,每个元素都会存下下一个元素的地址
很明显,两种数据类型的操作的时间复杂度:
数组 | 链表 | |
读取 | O(1) | O(n) |
插入 | O(n) | O(1) |
删除 | O(n) | O(1) |
下面来介绍下上面说到的时间复杂度(大O表示法)
大O表示法:O(操作次数)
常见的几种大O运行时间:
由快到慢:O(log n)、O(n)、O(n * log n)、O(n^2)、O(!n)
我们的二分查找就是O(log n)了
最后我们介绍下最经典的二分查找吧:
let arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] function sort(arr, num) { let low = 0 let high = arr.length - 1 let mid = Math.floor((low + high) / 2) while (low <= high) { if(arr[mid] === num) { return mid } else if (arr[mid] < num) { low = mid + 1 } else { high = mid - 1 } mid = Math.floor((low + high) / 2) } return null }
很明显这种算法每次都会把范围缩减一半,时间复杂度用大O表示法表示O(log n),最坏情况下总共会计算log2 n次
相关文章
- [PHP] 6种负载均衡算法
- 经典排序算法 - 选择排序
- Java实现 蓝桥杯 算法提高 成绩排序
- Java实现 蓝桥杯VIP 算法提高 不同单词个数统计
- Java实现 蓝桥杯VIP 算法提高 选择排序
- Java实现 蓝桥杯VIP 算法训练 集合运算
- Java实现 蓝桥杯 算法提高 递推求值
- Java实现 蓝桥杯 算法训练 最大的算式
- 机器学习入门:K-近邻算法
- 算法入门
- python入门-分类和回归各种初级算法
- 【python cookbook】【数据结构与算法】18.将名称映射到序列的元素中
- 【python】机器学习算法(KNN)入门——手写数字识别
- 机器学习(二十六):批量机器学习算法的最佳模型选取与最佳超参数获取(入门)
- 智能优化算法:卷尾猴搜索算法-附代码
- 1191. K 次串联后最大子数组之和-暴力动态规划,和优化算法
- 数据结构——算法之(028)( 寻找当中的一个子字符串个数)
- 算法导论 第2章 算法入门(直接插入排序、希尔排序、冒泡排序、合并排序)
- ADAS传感器数据融合算法的开发
- ACM基础算法入门及题目列表
- KMP算法入门
- nebula入门学习——day5 图算法
- Nebula入门学习——day4 nGQL中的图查询和其他算法
- 基于矩阵分解的推荐算法,简单入门
- python 十大经典排序算法
- 【机器学习】用 EM 算法推导解释 Kmeans?(面试回答)
- matlab音频水印算法研究+代码
- 机器学习入门(七)神经网络--代价函数、前向反向传播算法及问题
- C语言入门之程序的灵魂(算法)及数据类型