<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      javascript異步編程系列【七】----掃盲,我們為什么要用Jscex

      2011-09-07 08:45  【當耐特】  閱讀(5968)  評論(14)    收藏  舉報

      有人問我,不用Jscex是怎么把算法拆爛拆散的?為什么要用Jscex?

       

      QQ截圖20110907074757

      為什么不用? 那么就從高中演講冒泡培訓說起吧···

      【冒泡排序】


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

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

      §具體而言:比較相鄰的兩個數據元素,反序則交換。經過一趟排序后,最小值元素移到最上位置,其他較小的元素也向最上端位置移動(一趟起泡) 。

      §代碼實現:對于有n個數據元素的數據序列,共需n-1趟排序,第i趟對從位置n-1到位置i的數據元素進行比較、交換(最小下標從0開始),因此用二重循環實現

       

      【過程舉例】

      image

       

      【代碼實現】

      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("<br/>")
      }
      

      【輸出結果】

      image

      如果這樣看不到冒泡的過程話,我們可以把每一次對比和交換后的結果輸出:

      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("<br/>")
      }
      }

      image

       

      學生說:我還是看不到冒泡的過程啊·····························悲傷

       

      然后我想了想,大概寫出了下面這段代碼,然后卡住了······

      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
       <script>
      var array = new Array(567, 101, 44, 20, 99, 17, 26, 15, 7, 17, 58, 87, 4, 16);
      var temp;
      var sortAsync = eval(Jscex.compile("async", function (array) {
      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;
      }
      showArray(array);
      $await(Jscex.Async.sleep(50));
      }
      }
      }));
      function showArray(sortingArray) {
      var html = "";
      for (var q = 0; q < sortingArray.length; q++) {
      html += sortingArray[q] + " ";
      }
      document.getElementById("show").innerHTML = html;
      }
      function Button1_onclick() {
      sortAsync(array).start();
      }
      </script>
      <div style="font-size:xx-large" id="show">567 101 44 20 99 17 26 15 7 17 58 87 4 16 </div>
      <input id="Button1" type="button" value="開a始?冒°泡Y排?序ò" onclick="return Button1_onclick()" />
      

       

      那么傳統的異步編程遇到了什么困難?

      比如那段未寫完的代碼:

      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不僅僅是冒泡那么簡單····,它可以干大事。

       

      最新的Jscex 庫,請上https://github.com/JeffreyZhao/jscex或者http://www.sndacode.com/projects/jscex/wiki下載吧····

      【更多javascript異步編程系列】

      javascript異步編程系列【一】----用Jscex畫圓

      javascript異步編程系列【二】----Jscex模擬重力場與google蘋果logo的比較

      javascript異步編程系列【三】----Jscex無創痕切入JqueryUI

      javascript異步編程系列【四】----Jscex+Jquery UI打造游戲力度條

      javascript異步編程系列【五】----Jscex制作憤怒的小鳥

      javascript異步編程系列【六】----Jscex版憤怒的小鳥之沖鋒陷陣鳥


      主站蜘蛛池模板: 沿河| 欧美熟妇乱子伦XX视频| 性奴sm虐辱暴力视频网站 | 亚洲尤码不卡av麻豆| 亚州av第二区国产精品| 亚洲色欲色欱WWW在线| 国产精品中文字幕免费| 亚洲国产午夜精品福利| 色综合中文综合网| 亚洲人精品午夜射精日韩| 国产午夜精品理论大片| 一本色道久久加勒比综合| 中文字幕一区二区人妻| 99久久精品看国产一区| 中文字幕结果国产精品| 国产福利姬喷水福利在线观看 | 狠狠躁夜夜躁无码中文字幕| 国产又黄又爽又不遮挡视频| 久久这里只有精品好国产| 人人妻人人爽人人澡av| 91久久夜色精品国产网站| 亚洲大尺度一区二区三区| 婷婷色综合成人成人网小说| 人妻内射一区二区在线视频| 韶关市| 国产av国片精品一区二区| 日韩深夜福利视频在线观看| 国内精品免费久久久久电影院97| 3d全彩无码啪啪本子全彩| 四虎库影成人在线播放| 亚洲精品乱码免费精品乱| 亚洲人妻精品中文字幕| 男人的天堂av社区在线| 亚洲综合一区无码精品| 亚洲精品成人片在线观看精品字幕| 午夜毛片不卡免费观看视频| 中文区中文字幕免费看| 亚洲av成人精品免费看| 人妻精品动漫h无码| 亚洲福利精品一区二区三区| 精品亚洲国产成人av在线|