首页 > 编程语言 >JavaScript aglo 算法 时间复杂度

JavaScript aglo 算法 时间复杂度

时间:2023-06-30 18:12:38浏览次数:32  
标签:function aglo log 复杂度 JavaScript 算法 时间 let

https://www.bigocheatsheet.com/

https://www.hello-algo.com/chapter_preface/about_the_book/

 

gpt的回答

好的,下面给出这些算法的JavaScript例子,并给出它们的时间复杂度分析:

  1. O(1) - 常数时间复杂度:
javascriptCopy Code
function constantTimeAlgorithm(n) {
  return 2 + 3; // 这个算法的执行时间与输入规模 n 无关
}

这个算法的执行时间不随输入规模 n 的变化而改变,因此时间复杂度为 O(1)。

  1. O(log n) - 对数时间复杂度:
javascriptCopy Code
function logarithmicTimeAlgorithm(n) {
  let i = 1;
  while (i < n) {
    i = i * 2; // 每次乘以 2
  }
}

这个算法的执行时间随着输入规模 n 的增加而增加,但是每次迭代乘以 2,所以迭代次数为 log₂(n),因此时间复杂度为 O(log n)。

  1. O(n) - 线性时间复杂度:
javascriptCopy Code
function linearTimeAlgorithm(n) {
  for (let i = 0; i < n; i++) {
    console.log(i);
  }
}

这个算法的执行时间随着输入规模 n 的线性增长而增长,每个元素循环一次,因此时间复杂度为 O(n)。

  1. O(n log n) - 线性对数时间复杂度:
javascriptCopy Code
function linearithmicTimeAlgorithm(n) {
  for (let i = 0; i < n; i++) {
    for (let j = 1; j < n; j = j * 2) {
      console.log(i, j);
    }
  }
}

这个算法的执行时间随着输入规模 n 的增加呈线性对数增长。外层循环迭代 n 次,内层循环迭代 log₂(n) 次,因此总的时间复杂度为 O(n log n)。

  1. O(n²) - 平方时间复杂度:
javascriptCopy Code
function quadraticTimeAlgorithm(n) {
  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      console.log(i, j);
    }
  }
}

这个算法的执行时间随着输入规模 n 的平方增长,两层循环都是从 0 到 n-1,因此总的时间复杂度为 O(n²)。

  1. O(2^n) - 指数时间复杂度:
javascriptCopy Code
function exponentialTimeAlgorithm(n) {
  if (n <= 0) {
    return;
  }
  exponentialTimeAlgorithm(n - 1); // 递归调用
  exponentialTimeAlgorithm(n - 1);
}

这个算法的执行时间随着输入规模 n 的指数增长,每个递归步骤会调用两次自身,并且递归深度等于 n,因此总的时间复杂度为 O(2^n)。

这些是常见的时间复杂度示例,可以根据输入规模和具体算法的执行过程来判断其时间复杂度。

 

标签:function,aglo,log,复杂度,JavaScript,算法,时间,let
From: https://www.cnblogs.com/hechunfeng/p/17517523.html

相关文章

  • laytpl( Layui 的一款轻量 JavaScript 模板引擎)html标签点击事件传递多参
     <scripttype="text/html"id="aobjectvalue_temp"><spanclass="us-font-blue"style="cursor:pointer"onclick="seeinfo('{{d.aobjectkey}}','{{d.atype}}')">[资源详情]</spa......
  • JavaScript实现Fly Bird小游戏
    1.分析页面结构,理清需求和功能游戏有三个界面,分别是开始界面,游戏界面和游戏结束界面。1.1开始界面 游戏的大背景上下移动的游戏标题和翅膀摆动的小鸟start按钮,点击进入游戏界面一直移动的地面1.2游戏界面显示越过障碍数量的计分器移动的障碍物,分别是上管道和下......
  • JavaScript中数组常用方法汇总!
    数组是一个复杂数据类型,我们在操作它的时候就不能再想基本数据类型一样操作了。比如我们想改变一个数组//创建一个数组vararr=[1,2,3]//我们想把数组变成只有1和2arr=[1,2]这样肯定是不合理,因为这样不是在改变之前的数组。相当于重新制作了一个数组给到arr......
  • Vue3 vite:is a JavaScript file. Did you mean to enable the 'allowJs' option?
    描述今天在vue3+vite下进行打包时,突然vscode报了一个error。 大概的意识是询问是否启用“allowJS”选项,因为该文件在程序内是指定用于编译的根文件。提示信息已经很明确了,下面从网上摘抄了下什么是allowJS选项。allowJs是1.8中新提供的选项。TypeScrip......
  • JavaScript高级学习
    JavaScript进阶学习作用域、变量提升、闭包等语言特征,加深对JavaScript的理解,掌握变量赋值、函数声明的简洁语法,降低代码的冗余度。理解作用域对程序执行的影响能够分析程序执行的作用域范围理解闭包本质,利用闭包创建隔离作用域了解什么变量提升及函数提升掌握箭头函......
  • JavaScript 教程
    JavaScript是Web的编程语言。所有现代的HTML页面都可以使用JavaScript。JavaScript非常容易学。本教程将教你学习从初级到高级JavaScript知识。 为什么学习JavaScript?JavaScript是web开发人员必须学习的3门语言中的一门:HTML 定义了网页的内容CSS 描述......
  • JavaScript 格式化时间
    functionformatDate(date){/***格式化日期*@param{Date|String}date日期或日期字符串*/function_isString(val){returnObject.prototype.toString.call(val)==='[objectString]';}/***精确判断数据是否是Date类型*@param......
  • JavaScript 链表的增删改查
       //节点对象classNode{constructor(data){this.data=data;//存储节点数据this.next=null;//存储下一个节点的引用,默认为null}}//链表对象classLinkedList{constructor(){this.head=null;//链表头节点,默认为null}......
  • JavaScript学习 -- 内置函数(Math和Date)
    一、Date函数letdate=newDate()console.log("当前日期和时间:"+date)console.log("当前日期和时间:"+date.toLocaleString())console.log("年份:"+date.getFullYear())console.log("月份:"+(parseInt(date.getMonth())+1))console.log("日:"......
  • JavaScript引爆Salesforce职业生涯!抓住高薪机会
    Salesforce是一款领先的CRM软件,已被各种规模和行业的企业使用多年。Salesforce不仅易于使用,而且可定制,使企业能够改善其销售、营销、客户服务和其他业务流程。近年来,Salesforce一直在创新,从传统的基于Oracle的平台转变为在业界更具吸引力的解决方案。目前,许多工作可以由人工智能......