算法 插入排序 的 JS实现及时间复杂度分析
来源:互联网 发布:mac图片压缩软件 编辑:程序博客网 时间:2024/05/16 04:22
js实现插入排序:
let cards=[1,2,7,8,9,0,6,3,7];//算法时间复杂度分析let firstCard=cards[0]; //1for(let i=1;i<cards.length;i++){ //2 let currentCard=cards[i]; //3 let j=i-1; //4 while(j>-1&&cards[j]>currentCard){ //5 cards[j+1]=cards[j]; //6 j--; //7 } cards[j+1]=currentCard; //8}console.log(cards);
插入排序算法时间复杂度分析
设cards的长度为n
语句序号 消耗 执行次数
1 c1 1
2 c2 n
3 c3 n-1
4 c4 n-1
5 c5
6 c6
7 c7
8 c8 n-1
消耗的时间T(n)=c1+c2n+c3(n-1)+c4(n-1)+c5+c6+c7+c8(n-1)
当为最佳情况即cards为一个已排好顺序的数组,此时公式变为
T(n)=c1+c2n+c3(n-1)+c4(n-1)+c5(n-1)+c8(n-1)
即T(n)=an+b
当为最坏情况即cards为一个反序排列的数组,省去计算过程,此时公式变为
T(n)=a+bn+c
忽略掉次要情况,最佳情况变为n,最坏情况变为
一般情况下,我们更在意平均情况,这里最坏情况接近平均情况,也就是
我们用渐进符号Θ表示插入排序时间复杂度存在的集合
即Θ()
渐进符号Θ解释
Θ(g(n))相当于 存在两个常量c1和c2
我们需要的时间复杂度集合f(n)的范围为
c1g(n)<=f(n)<=c2g(n)
在插入排序中也就是c1<=f(n)<=c2
一般情况下我们只关注量级比如时间复杂度为Θ(n)的算法快于时间复杂度为Θ(
)的算法
- 算法 插入排序 的 JS实现及时间复杂度分析
- 插入排序算法的java实现及时间复杂度分析
- 直接插入排序算法c语言实现。 己它的时间复杂度分析。
- 堆排序算法原理,实现及时间复杂度分析
- 常用排序算法--冒泡排序及改进和插入排序时间复杂度分析
- 插入排序的时间复杂度分析
- 堆排序算法及时间复杂度分析
- 简单排序算法时间空间复杂度分析及应用(2)-插入排序
- 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序
- 归并排序实现及时间复杂度分析
- 排序算法的时间、空间复杂度及实现
- 插入排序和归并排序实现以及时间复杂度分析
- 常见排序算法实现及复杂度分析
- 排序算法实现及复杂度分析(一)
- 排序算法实现及复杂度分析(二)
- 排序算法实现及复杂度分析(三)
- 浅谈直接插入排序算法思想以及时间复杂度分析
- 希尔排序算法的实现及复杂度分析
- CPP类和对象+四个默认成员函数+运算符重载
- selpg开发
- android 笔记
- 基础篇:6.3)形位公差-基准 Datum
- PullToRefreshListView刷新
- 算法 插入排序 的 JS实现及时间复杂度分析
- hadoop安全模式
- SpringBoot 数据库增删改查实例
- git merge 与 rebase 的使用场景分析
- 2006年培养学员8万人,每年增长%25,请问按此增长速度,到那一年培训学员人数将达到20万人用for,while,dowhile,实现
- 用http_build_query()函数在curl处理post请求参数
- 开始前端——第一篇
- 如何从 MongoDB 迁移到 MySQL
- 毕业论文查重是一个怎样的过程?