Html5 冒泡排序演示

来源:http://www.cnblogs.com/hsiang/archive/2016/12/15/6185352.html
-Advertisement-
Play Games

冒泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法。 它重覆地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重覆地進行直到沒有再需要交換,也就是說該數列已經排序完成。 這個演算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂 ...


冒泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法。

它重覆地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重覆地進行直到沒有再需要交換,也就是說該數列已經排序完成。

這個演算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。

------------------------------------------------------------------------

本例是用Html展示,冒泡排序的例子,如下圖所示:

由於此演算法相對比較簡單,對此不再贅述,代碼如下:

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <title>The nineth html page</title>
  5     <style type="text/css">
  6         ul li
  7         {
  8             list-style-type:georgian;
  9             text-align:left;
 10          }
 11         .mark
 12         {
 13             width:140px;
 14             height:40px;
 15             color:Olive;
 16             text-align:center;
 17             line-height:40px;
 18             margin:5px;
 19             float:left;
 20          }
 21           .redball
 22         {
 23             width:40px;
 24             height:40px;
 25             border-radius:20px;
 26             background-color:Red;
 27             text-align:center;
 28             line-height:40px;
 29             margin:5px;
 30             float:left;
 31         }
 32         .ball
 33         {
 34             width:40px;
 35             height:40px;
 36             border-radius:20px;
 37             background-color:Aqua;
 38             text-align:center;
 39             line-height:40px;
 40             margin:5px;
 41             float:left;
 42         }
 43         .line
 44         {
 45             clear:left;
 46          }
 47         header
 48         {
 49             height:80px;
 50             border:1px solid gray;
 51         }
 52         .left
 53         {
 54             border:1px solid gray;
 55             float:left;
 56             width:30%;
 57             height:480px;
 58             margin-left:0px;
 59             margin-right:0px;
 60             
 61         }
 62         aside
 63         {
 64             text-align:center;
 65         }
 66         section
 67         {
 68             width:69.5%;
 69             float:left;
 70             height:480px;
 71             border:1px solid gray;
 72             margin-left:0px;
 73             margin-right:0px;
 74         }
 75         footer
 76         {
 77             clear:left;
 78             height:60px;
 79             border:1px solid gray;
 80         }
 81         input[type="button"]
 82         {
 83             width:80px;
 84             text-align:center;
 85             margin-top:10px;
 86          }
 87     </style>
 88     <script type="text/javascript">
 89         function initDiv() {
 90             var mainArea = document.getElementById("mainArea");
 91             for (var i = 0; i < 8; i++) {
 92                 var newDivLine = document.createElement("div");
 93                 newDivLine.setAttribute("class", "line");
 94                 mainArea.appendChild(newDivLine);
 95                 for (var j = 0; j < 9; j++) {
 96                     var newDiv = document.createElement("div");
 97                     var id = i.toString() + j.toString();
 98                     newDiv.setAttribute("id", id);
 99                     if(j<8){
100                         newDiv.setAttribute("class", "ball");
101                     }else{
102                         newDiv.setAttribute("class", "mark");
103                     }
104                     newDivLine.appendChild(newDiv);
105                 }
106             }
107         }
108  
109         //初始元素賦值
110         var arrTmp = [4, 6, 8, 7, 9, 2, 10, 1];
111         function setElementsValue() {
112             for (var i = 0; i < arrTmp.length; i++) { 
113                 document.getElementById("0"+i.toString()).innerText=arrTmp[i];
114             }
115             document.getElementById("08").innerText="原始數據";
116         }
117 
118         //冒泡排序
119         function setBubbleSortValue() {
120             for (var i = 0; i < arrTmp.length-1; i++) {
121                 for (var j = 0; j < arrTmp.length - 1 - i; j++) {
122                     if (arrTmp[j] > arrTmp[j + 1]) {
123                         var tmp = arrTmp[j + 1];
124                         arrTmp[j + 1] = arrTmp[j];
125                         arrTmp[j] = tmp;
126                     }
127                 }
128                 //顯示出來
129                 for (var k = 0; k < arrTmp.length; k++) {
130                     document.getElementById((i + 1).toString() + k.toString()).innerText = arrTmp[k];
131                     if (i + k == arrTmp.length - 1) {
132                         document.getElementById((i + 1).toString() + k.toString()).setAttribute("class", "redball");
133                     }
134                 }
135                 document.getElementById((i + 1).toString() + "8").innerText = "" + (i + 1).toString() + " 排序";
136             }
137         }
138 
139     </script>
140 </head>
141 <body>
142 <header>
143     <h1>Bubble Sort Demo</h1>
144 </header>
145 <aside class="left">
146 
147 <input type="button" id="btnInit" value="Init" onclick="initDiv();" />
148 <br />
149 <input type="button" id="btnSetValue" value="SetValue" onclick="setElementsValue();" />
150 <br />
151 <input type="button" id="btnBubble" value="BubbleSort" onclick="setBubbleSortValue();" />
152 <br />
153 <h3>冒泡排序(Bubble Sort</h3>
154 <ul>
155     <li>比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。</li>
156     <li>對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。</li>
157     <li>針對所有的元素重覆以上的步驟,除了最後一個。</li>
158     <li>持續每次對越來越少的元素重覆上面的步驟,直到沒有任何一對數字需要比較</li>
159 </ul>
160 </aside>
161 <section id="mainArea">
162     
163 </section>
164 <footer>
165     這是底部信息
166 </footer>
167 </body>
168 </html>
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、導語 編程思想之於軟體開發,正如建築結構之於一磚一瓦。不同的編程思想對於軟體如何構在某些地方略有相似,在很多地方又有著顯著的差異,而這些差異不僅僅在於語言的不同,而是編程開發思想的區別。本片文章將分別介紹結構化方法中的結構化設計和結構化分析,面向對象方法中的面向對象分析並分別總結優缺點。 2、結 ...
  • 命令模式:將請求封裝成對象,以便使用不同的請求、隊列或者日誌來參數化其它對象。 命令對象:通過在特定接收者上綁定一組動作來封裝一個請求。要達到這一點,命令對象將動作和接收者包進對象中,只暴露出一個execute()方法,這方法被調用的時候,接收者就會執行這些動作。 實現命令介面(所有的命令對象都必須 ...
  • 單例模式必須只有一個實例,並且提供一個全局訪問方法。 解析經典單利模式實例: 1 package designPatterns; 2 3 public class Singleton { 4 5 //利用一個靜態變數來記錄類的唯一實例 6 7 private static Singleton uni ...
  • 如果你是一名建築工人, 現在要建一棟十幾層的樓房, 你會按照什麼樣的一個順序去建造呢? 正常來說, 肯定是先打地基, 然後在此基礎上, 建一層, 建第二層 ...... , 就現在中國的科技來說, 還沒有說, 可以先建頂層, 再打地基, 在建倒數第二層, 這樣一種隨心所欲的建造方法來實現吧. 說白了 ...
  • 通過 CSS3,我們能夠創建動畫,這可以在許多網頁中取代動畫圖片、Flash 動畫以及 JavaScript。 CSS3 動畫 CSS3 動畫 CSS3 @keyframes 規則 如需在 CSS3 中創建動畫,您需要學習 @keyframes 規則。 @keyframes 規則用於創建動畫。在 @ ...
  • 過程概述 瀏覽器查找功能變數名稱對應的 IP 地址; 瀏覽器根據 IP 地址與伺服器建立 socket 連接; 瀏覽器與伺服器通信: 瀏覽器請求,伺服器處理請求; 瀏覽器與伺服器斷開連接。 以下為詳細解析: 根據功能變數名稱查找 IP 地址 概念解釋 IP 地址:IP 協議為互聯網上的每一個網路和每一臺主機分配的一 ...
  • ▓▓▓▓▓▓ 大致介紹 接下來的這幾個博客是對前面所學知識的一個簡單的應用,來加深理解 ▓▓▓▓▓▓ 單行文本框 只介紹一個簡單的樣式:獲取和失去焦點改變樣式 基本結構: 在CSS中添加一個類為focus的樣式 然後為文本框添加獲取和失去焦點事件 效果: ▓▓▓▓▓▓ 多行文本框應用 1、高度變化 ...
  • 1.原生ajax get請求和post請求區別:黃色小三角 以get請求為例,輸出結果如下: 2.jquery中的ajax 列了常用的6個方法: 3.狀態說明 readystate: 0:請求未初始化,open未調用 1:伺服器連接已建立,open已經調用了 2:請求已接受,也就是接收到頭信息了 3 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...