一个很有趣的算法

        var arr = [ 3000,0,1000,‘aa‘, 2000, 4000, 8000, 6000, 7000, 5000];

	for (i = 0; i < arr.length; i++) {
		setTimeout(function(num) {
			console.log(num);
			debugger;
		}, arr[i], arr[i]);
	}

  先看结果

哈哈是不是很有趣。

竟然自动排序了。

其实把原理很简单

首先setTimeout有两种形式

setTimeout(code,interval)
setTimeout(func,interval,args)

所以第二个arr[i]就会作为参数传进去。

明白了吧。

然后就是setTimeout异步运行的机制。其实当第一次cosole.log()时候

外面的for以后走完了,你不信么。

来来上图

我会乱说么。呵呵呵呵

看吧第一次debugger时候就已经是10了

然而时间肯定是从小到大运行的,所以就从小到大输出了。

话说真是好好玩的东西。:)

时间: 2024-11-05 17:24:20

一个很有趣的算法的相关文章

遇到的一个很有趣的陷阱

今天在做ACM题的时候,遇到了一个问题,记下来,避免下次再遇到. 问题 问题很简单大概就是输入一段话,然后打印出里面包含了a-z的字母分别有多少个.贴出代码 package com.csdhsm.acm4; import java.util.HashMap; import java.util.Map; import java.util.Scanner; class NumberOfLetters{ private Map<Character, Integer> values; public N

在网上看到一个很有趣的小游戏

<html> <title>猜数字</title> <body> <center><h2>猜数字</h2></center> <hr> <script> var target=36; var number=0; do{ number=window.prompt("输入数字",number); if(number==null || number==target) bre

一道有趣的算法题:仿照Excel的列编号,给定一个数字,输出该列编号字符串

       By Long Luo 最近遇到一个算法题: 仿照Excel的列编号,给出一个数字,输出该列编号字符串. 例如:A对应1,Z对应26,AA对应27,AZ对应52 ...... 这个题目是一个典型的26进制思路去处理,但是这个题目里面有很多陷阱,在1, 26, 52等特殊情况进行考虑,经过晚上接近1个小时的编写,完成的代码如下: C++代码如下: #include <iostream> #include <string.h> using namespace std; /

微软推出一个非常有趣的网站—— How-old.net 看照片猜年龄!

周末休闲一下啊!! 微软推出一个非常有趣的网站-- How-old.net 看照片猜年龄!这是由微软机器学习团队的工程师们开发的一个"年龄测试"的新玩意,通过图像脸部识别和大数据分析,可以快速识别出照片中的人的性别和年龄!而且还能一次判断多人,网上大家玩得很欢乐,也来试试看你的颜值被认为是几岁吧-- 网址: http://how-old.net/#results

编程,很有趣,也很催泪(一)

我几乎都忘记自己是怎么开始就迷上了编写程序这项本来完全和自己无关的活动的了,我只是一个会计,普普通通的那种. 那时候,在通过了注册会计师考试的会计科目以后,我在一家不错的企业找到一份会计的工作.一次偶然的机会,公司的excel里的vba出了问题,IT部门没有人手处理,大家都在忙着开发我们的核心业务应用,对于我们财务部这些excel里的小宏程序,完全没有计划去维护,况且编写这些vba代码的大哥早已离职,IT部那些科班出身的大牛都懒得看这些凌乱的vba代码,他们懂得JAVA,懂得Oracle,懂得L

一个简单有趣的SQL存储过程——个人财务管理

刚开始学习存储过程的小白,网上看完语法后一般都会想实践一下,但往往又不知道该写个什么样的存储过程来练手,以下就提供一个简单有趣.用来查询每月个人财务状况的存储过程. 一.建表 首先需要建一张事实表,用来记录每月重要的支出,包括支出的类型.费用.付款方式.每月付款时间.首次分期还贷时间.最后分期还贷时间(还完的时间).用途.支出大类...不一定会都用到,也可以根据实际情况做相应的增减,以下仅提供一个例子. CREATE TABLE [dbo].[Fact_CostType] ( [CostType

大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!

DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!--和一个句子的分词算法CRF没有区别!注:传统DDos检测直接基于IP数据发送流量来识别,通过硬件防火墙搞定.大数据方案是针对慢速DDos攻击来搞定.难点:在进行攻击的时候,攻击数据包都是经过伪装的,在源IP 地址上也是进行伪造的,这样就很难对攻击进行地址的确定,在查找方面也是很难的.这样就导致了分布式拒绝服务攻击在检验方法上是很难做到的.领域知识见:http://blog.csdn.n

经典算法--很小的算法理解算法的本质

//rplace.c //题目:假设存在字符串"qwer tyubfg hsdf   jjhg  ",并且该字符串具有足够大的空间编写算法将其中的空格字符用"%20"代替.//要求:时间复杂度:O(n),空间复杂度:S(1).//算法分析://要实现时间复杂度为O(n),必须采用一重循环,并且循环控制由数组长度n控制,可以采用多次循环.//  则不可用算法:    遍历数组遇见空格将空格替换成%20,然后将其后的各个元素向后移动,最坏的时间复杂度为:O(n^2),空

一个很不错的bash脚本编写教程

转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用.所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行). 如同其