Windjs之冒泡排序过程展示

  太棒的Windjs体验!写一个冒泡过程的展示,how?

  先写个冒泡排序,坑爹的是我居然不会写...用惯了stl的今天连个冒泡都不会了也是醉了,写了蛮久居然发现写出来的是选择排序...纠结了蛮久还是给拼出来了...

  but排序和画圆一样,都是一瞬间的事情,完全看不清中间bubble的过程。

  怎么破 

  再次祭出大杀器Windjs!from my point of view,Windjs就是能使得“线程”挂起的东西,跟vbs的sleep函数异曲同工;“挂起”后,不再执行任何js代码。按照老赵的话来说:"

  在大部分平台上编写这样的程序并没有太大困难,只要在绘制出图形之后短暂地阻塞线程就行了。可惜,在JavaScript中我们只能“一蹴而就”,要暂停的话,只能使用setTimeout进行回调了。不过,这也正是Jscex的用武之地,用Jscex编写的代码需要“暂停”,只需要简单地调用sleep异步方法,一切都很直接。"

  其实用setTimeout进行回调也是可以的,不过第二个参数的时间需要累积,很麻烦,不优雅,而for的继续执行会使代码出现各种坑爹结果...

  so 如果想要用html5做动画或者特效,Windjs真的是个很好的辅助工具~

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <link rel="stylesheet" href="reset.css">
 5     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6     <title> </title>
 7     <script src="jquery.js"></script>
 8     <script src="wind-all-0.7.3.js"></script>
 9     <style>
10       span {border:1px solid red; width:40px; height:40px; position: absolute; text-align: center; line-height:40px}
11     </style>
12     <script>
13       window.onload = function() {
14         var run = eval(Wind.compile(‘async‘, function() {
15           var from = [];
16           var list = document.getElementsByTagName(‘span‘);
17           for(var i = 0; i < list.length; i++) {
18             list[i].style.left = 50 * i + ‘px‘;
19             from[i] = i;
20           }
21
22           for(var i = 9; i >= 1; i--)
23             for(var j = 0; j < i; j++) {
24               var x = list[from[j]].innerHTML;
25               var y = list[from[j + 1]].innerHTML;
26               if(x > y) {
27                 $(‘span‘).eq(from[j]).animate({left:‘+=50px‘});
28                 $(‘span‘).eq(from[j + 1]).animate({left:‘-=50px‘});
29                 $await(Wind.Async.sleep(1000));
30                 var temp = from[j];
31                 from[j] = from[j + 1];
32                 from[j + 1] = temp;
33               } else {
34                 $(‘span‘).eq(from[j]).css(‘borderColor‘, ‘green‘);
35                 $(‘span‘).eq(from[j + 1]).css(‘borderColor‘, ‘green‘);
36                 $await(Wind.Async.sleep(1000));
37                 $(‘span‘).eq(from[j]).css(‘borderColor‘, ‘red‘);
38                 $(‘span‘).eq(from[j + 1]).css(‘borderColor‘, ‘red‘);
39                 $await(Wind.Async.sleep(1000));
40               }
41             }
42         }));
43
44         run().start();
45       };
46     </script>
47   </head>
48   <body>
49     <span>9</span>
50     <span>1</span>
51     <span>3</span>
52     <span>6</span>
53     <span>4</span>
54     <span>5</span>
55     <span>2</span>
56     <span>8</span>
57     <span>7</span>
58     <span>0</span>
59   </body>
60 </html>

bubble.html

时间: 2024-11-14 11:47:57

Windjs之冒泡排序过程展示的相关文章

数组的冒泡排序方法展示

package cn.itcast; public class pubbleSort { public static void main(String[] args) { int[] arr = { 84, 65, 95, 8, 63, 54, 25, 68, 47, 77, 58, 54, 69, 55, 58, 4, 5, 55, 48, 87, 45, 58, 54, 12, 25, 49 }; for (int i = 0; i < arr.length; i++) { System.o

js实现队列的操作以及对队列中数字的冒泡排序的可视化

一.理论基础 (1)封装一个对队列操作的构造函数,可以进行进队列,出队列,获得队列长度,返回该队列的数组形式. (2)使用正则表达式对input框中的输入字符进行验证,并获得有效的值 (3)使用setInterval()定时器实现可视化的冒泡排序过程,(因为js中没有sleep()函数),使用两个嵌套if语句控制排序过程,外部if语句表示执行次数,内部if语句进行相邻两个数的比较,每两个相邻数字,通过比较,交换完之后,绘制一次图形,j++,然后通过定时器继续执行函数,当一次的相邻数字比较完之后,

算法之冒泡排序

申明:参考    http://www.cnblogs.com/iuices/archive/2011/11/13/2247193.html 原理:将一组数储存在数组List[n]中.逆序,依次比较相邻两个元素的大小,遵循“小数在前,大数在后”的规则交换两数. 第一次扫描,将最小的数放在数组的第一位置,第二次扫描只要对除去第一位置的其余的数重复上述步骤即可……共扫描n-1次 程序中引入一个布尔量exchange,在每趟排序开始前,先将其置为FALSE.若排序过程中发生了交换,则将其置为TRUE

Java冒泡排序算法

package com.jckb; /** * 冒泡排序 * @author gx */ public class BubbleSort { public static void main(String[] args) { int[] arr = { 6, 3, 8, 2, 9, 1 }; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] &g

1.比较排序之冒泡排序

冒泡排序可以说是在排序算法中最为入门级别的算法之一了.因为其简单易于理解,常在课堂中作为排序的入门算法. 冒泡排序见名生意,其排序过程如同水里的泡一般由下往上逐级递升.下图所示为冒泡排序过程:假设待排序序列为{10, 2, 11, 8, 7}. Java 1 package com.algorithm.sort.bubble; 2 3 import java.util.Arrays; 4 5 /** 6 * 冒泡排序 7 * Created by yulinfeng on 6/19/17. 8

排序算法——冒泡排序(C语言实现)

  原理 其原理是从乱序数组中的第一个位置的数据开始,让其与相邻的数字比较,如果相邻数字比该数字小(或大,这根据你想要升序结果还是降序结果决定),就交换两个位置,依次向后比较交换,知道数组最后.一轮结束以后,最大(或最小)的数字会被放在最后一个位置,再重复上述冒泡过程一轮,则第二大(或小)数字被放在了倒数第二个位置,这样反复进行n次(n表示数组的长度),冒泡排序过程结束. 复杂度分析 冒泡的时间复杂度是O(n2),因为在最坏的情况下,每个数据都会被遍历n(n为数组长度)次:空间复杂度是O(1),

常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)

冒泡排序算法: 总的来说就是两两交换,反复直到有序,第一个记录和第二个记录,若逆序则交换,然后比较第二个和第三个记录,以此类推,直到第 n 个记录和第 n-1个记录比较完毕为止,第一趟排序,结果关键字最大的记录被安排在最后一个位置.对前 n-1个记录继续冒泡排序,使得关键字次大的记录安排在第 n-1个位置.如此重复,直到没有需要交换的记录为止(仅仅是第一个和第二个交换过为止).整个一趟趟的选出最值的过程,仿佛是那水里的气泡,咕嘟咕嘟的往上翻的过程. 递增冒泡排序过程图解: 一般先比较第一个元素和

冒泡排序及其算法优化分析

1.基本冒泡排序 冒泡排序的基本思想:假设被排序的记录数组d[1...N]垂直竖立,将每个记录d[i]看作是一个气泡,那么重的气泡就会向下下沉,轻的气泡就会向上升.每次都是相邻的两个气泡d[i]和d[i+1]进行比较.如果d[i]>d[i+1],那么就交换两个气泡,然后在比较d[i+1]和d[i+2],以此类推,知道所有的气泡都有序排列.假设排序20,37,11,42,29. 第1次冒泡:20.37,11,42,29 d[0]和d[1]比较 第2次冒泡:20,11,37,42,29 d[1]和d

UVA 299- Train Swapping(冒泡排序中交换次数)

Train Swapping Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description  Train Swapping  At an old railway station, you may still encounter one of the last remaining ``train swappers''. A train swapper is an em