博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript异步编程系列【七】----扫盲,我们为什么要用Jscex
阅读量:7220 次
发布时间:2019-06-29

本文共 2408 字,大约阅读时间需要 8 分钟。

有人问我,不用Jscex是怎么把算法拆烂拆散的?为什么要用Jscex?

 

为什么不用? 那么就从高中演讲冒泡培训说起吧···

【冒泡排序】

基本思想(以升序举例):

§形象比喻:像水面冒泡一样每次从水底浮到水面.

§具体而言:比较相邻的两个数据元素,反序则交换。经过一趟排序后,最小值元素移到最上位置,其他较小的元素也向最上端位置移动(一趟起泡) 。

§代码实现:对于有n个数据元素的数据序列,共需n-1趟排序,第i趟对从位置n-1到位置i的数据元素进行比较、交换(最小下标从0开始),因此用二重循环实现

 

【过程举例】

 

【代码实现】

var array = new Array(44, 20, 17, 26, 15, 7, 17, 58);for (var j = 0; j < array.length - 1; j++) {for (var i = array.length - 1; i > 0; i--) {if (array[i] < array[i - 1]) {var temp = array[i];array[i] = array[i - 1];array[i - 1] = temp;}}document.write("第" + (j+1) + "趟排序后:")for (var p = 0; p < array.length; p++) {document.write(array[p] + " ");}document.write("
")}

【输出结果】

如果这样看不到冒泡的过程话,我们可以把每一次对比和交换后的结果输出:

var array = new Array(44, 20, 17, 26, 15, 7, 17, 58);var count = 0;for (var j = 0; j < array.length - 1; j++) {for (var i = array.length - 1; i > 0; i--) {if (array[i] < array[i - 1]) {var temp = array[i];array[i] = array[i - 1];array[i - 1] = temp;}count++document.write("第" + count+ "次对比交换后")for (var p = 0; p < array.length; p++) {document.write(array[p] + " ");}document.write("
")}}

 

学生说:我还是看不到冒泡的过程啊·····························悲伤

 

然后我想了想,大概写出了下面这段代码,然后卡住了······

function showArray(sortingArray) {var html = "";for (var q = 0; q < sortingArray.length; q++) {html += sortingArray[q] + " ";}document.getElementById("show").innerHTML = html;//怎么办呢?我要把这个算法拆开显示?!?!?!?无助啊?!?!?for (var j = 0; j < array.length - 1; j++) {for (var i = array.length - 1; i > j; i--) {if (array[i] < array[i - 1]) {temp = array[i];array[i] = array[i - 1];array[i - 1] = temp;}}}setTimeout("showArray(sortingArray)", 50);}

 

然后我灵光一现,直接用Jscex

9 8 1 2 3 5 4 6 7
567 101 44 20 99 17 26 15 7 17 58 87 4 16

 

那么传统的异步编程遇到了什么困难?

比如那段未写完的代码:

function showArray(sortingArray) {var html = "";for (var q = 0; q < sortingArray.length; q++) {html += sortingArray[q] + " ";}document.getElementById("show").innerHTML = html; for (var j = 0; j < array.length - 1; j++) {for (var i = array.length - 1; i > j; i--) {if (array[i] < array[i - 1]) {temp = array[i];array[i] = array[i - 1];array[i - 1] = temp;}}}setTimeout("showArray(sortingArray)", 50);}

【一】函数体违背了单一职责---- 一个函数就干一件事情

我不仅要负责显示,而且要负责循环,再者要负责什么时候跳出循环;

【二】破坏了算法的完整性

我要把算法拆散显示,破坏了原有的算法,然后要去构造另外的显示算法。

 

编程语法发展了50-60年,抽象级别在不断的提高。Jscex的这次提升绝对是有历史意义的。

在21世纪的现在,

如果你是一个前端开发者,

如果你要用HTML5写游戏或者动画

如果你不使用Jscex,绝对是你的一大损失。

在以后的系列,我会带着大家做许多游戏,完全Jscex版本的!Jscex不仅仅是冒泡那么简单····,它可以干大事。

 

最新的 库,请上或者下载吧····

【更多javascript异步编程系列】

转载地址:http://wrqym.baihongyu.com/

你可能感兴趣的文章
随机产生32位字符串
查看>>
iOS UISearchController的使用
查看>>
在平面中,一个点绕任意点旋转θ度后的点的坐标
查看>>
怎样差别上升沿、下降沿、低电平、高电平
查看>>
出自 HTML4 规范的可用颜色字符串值列表(常用颜色名称及对应的十六进制值)...
查看>>
收集数据至泛型Dictionary
查看>>
如何将phantomjs单独部署在服务端
查看>>
datatable的点击事件
查看>>
Eureka的自我保护模式
查看>>
android 无线连接eclipse
查看>>
React 小案例 订单列表评价
查看>>
设计模式-观察者模式
查看>>
JAVA 8 函数式接口--Function
查看>>
操作系统同步原语
查看>>
字符串与JavaScript之间的魔术—前端模板的原理及简单实现
查看>>
redux原来如此简单
查看>>
【刷算法】层次遍历二叉树
查看>>
DOM element 详解
查看>>
在线代码编辑器 Codemirror 的轻量级 React 组件
查看>>
Python函数定义与使用
查看>>