1. 程式人生 > >js 中的 一些簡單演算法(二)之 雙層迴圈—氣泡排序

js 中的 一些簡單演算法(二)之 雙層迴圈—氣泡排序

1、列印9*9乘法表

思路:腦補一下乘法表的格式,9*9就是有9列、9行組成。行和列都需要由迴圈控制。

document.write("<table border='1' cellspacing='0' cellpadding='0'>"); //最外面放一個大框
for(var i = 1; i <= 9; i++){   //控制行迴圈
	document.write("<tr>");
		for(var j = 1; j <= i; j++){   //控制列迴圈
			document.write("<td>");
			document.write(i + "*" + j + "=" + i * j);
			document.write("</td>");
		}
	document.write("</tr>");
}
document.write("</table>");
2、列印正方形(10 * 10).

思路:類似的正方形也是10行和10列組成

for(var i = 1; i <= 10; i++){  //外層迴圈控制行
	for(var j = 1; j <= 10; j++){ //內層迴圈控制列
		document.write("☻");
	}
	document.write("<br />");
}
3、列印直角三角形。

思路:類似的直角三角形也是由行和列組成,只不過有一個條件,就是下一行始終比上一行多一列。

for(var i = 1; i <= 10; i++){  //外層迴圈控制行
	for(var j = 1; j <= i; j++){ //內層迴圈控制列
		document.write("☻");
	}
	document.write("<br />");
}

小結:注意每進行一次外層迴圈,內層迴圈要徹底迴圈完畢,才會進入下一次外層迴圈。

4、氣泡排序。

給出一組數,讓進行從小到大排列。

思路:牽扯到陣列中裡的每個數都要進行兩兩比較大小。

var array = [65, 97, 76, 13, 27, 49, 58];
for (var i = 1; i < array.length; i++) {  //外層迴圈控制趟數
    var isSort = true;
    for (var j = 0; j < array.length - 1; j++) {  //內層迴圈控制兩兩比較大小的次數
        if (array[j] > array[j + 1]) {
            var tmp = array[j];
            array[j] = array[j + 1];
            array[j + 1] = tmp;
            isSort = false;
        }
    }
    if (isSort) {
        break;
    }
}
console.log(array);
趟數:陣列中,每一個數都要和除自己外的其他數進行比較。每個數和其他數全都比較完了稱為一趟。

         內層迴圈控制的是保證每個數都會和其他數進行比較並排列位置。


相關推薦

js 一些簡單演算法 雙層迴圈氣泡排序

1、列印9*9乘法表 思路:腦補一下乘法表的格式,9*9就是有9列、9行組成。行和列都需要由迴圈控制。 document.write("<table border='1' cellspacing='0' cellpadding='0'>"); //最外面放一個

js簡單演算法如何去除一個數組與另一個數組的值相同的元素

codewars上面6kyu的演算法題,下面是演算法題的英文簡介 Your goal in this kata is to implement an difference function, which subtracts one list from another. I

程式設計一些常見演算法

1、向上取整:x/y向上取整 = (x + y -1)/y void main() { int x=22,y=5; int result = (x + y -1)/y; printf("%d/

java的分散式應用各類中介軟體中用到的演算法

    為了便於區分分散式系統中用到的各類中介軟體所使用的演算法,這裡記錄了他們的核心演算法,但由於個人能力有限,不涉及演算法實現,有關演算法實現請大家另尋他路,這裡只記錄中介軟體核心演算法以及簡單介

js資料結構和演算法棧和佇列

基本概念 棧和佇列都是動態的集合,在棧中,可以去掉的元素是最近插入的哪一個。棧實現了後進先出。在佇列中,可以去掉的元素總是在集合中存在的時間最長的那一個。佇列實現了先進先出的策略。 棧的官方定義:棧(Stack)是一個後進先出(Last in first out,LIFO)

c#實現的一些幾何演算法

續一 //關於線的一些演算法    public class GeometricClass     {         /* 判斷點與線段的關係,用途很廣泛           本函式是根據下面的公式寫的,P是點C到線段AB所在直線的垂足                

演算法排序

排序演算法很多,常用的排序演算法有:氣泡排序、插入排序、選擇排序、歸併排序、快速排序、計數排序、基數排序、桶排序。 接下來一一介紹幾種排序的時間複雜度及優缺點。 插入排序與氣泡排序的時間複雜度相同O(n^2),開發中我們更傾向插入排序,而不是氣泡排序 排序演算法執行效率: 1.最好、最壞、平均情況時間

重學資料結構和演算法叉樹、紅黑樹、遞迴樹、堆排序

[TOC] 最近學習了極客時間的《資料結構與演算法之美]》很有收穫,記錄總結一下。 歡迎學習老師的專欄:[資料結構與演算法之美](https://time.geekbang.org/column/intro/126) 程式碼地址:https://github.com/peiniwan/Arithmetic

JavaWeb一些簡單操作 --- JS宣告全域性變數

一、JS中宣告全域性變數主要分為顯式宣告或者隱式宣告下面分別介紹。 1、使用var(關鍵字)+變數名(識別符號)的方式在function外部宣告,即為全域性變數,否則在function宣告的是區域性變數。該方式即為顯式宣告詳細如下: <script&g

運維工作經常用到的一些知識總結

Markdown Xtraback Linux Squid DenyHost 接上篇:http://blog.51cto.com/bobo365/2125121 31、screen: screen -S xxx screen -r xxx screen -D -r <session-id

JDKJCA的簡單使用---RSA加簽驗籤

Signature 類 Signature類是一個引擎類,提供加密的數字簽名演算法,例如DSA或RSAwithMD5。加密安全簽名演算法採用任意大小的輸入和私鑰,並生成一個相對較短(通常是固定大小)的位元組串——簽名。 只有私鑰/公鑰對的所有者才能建立簽名。對於擁有公鑰的任何人來說

vue.jsaxios的封裝參考

基於前文所述,axios 是一個基於Promise 用於瀏覽器和 nodejs 的 HTTP 客戶端,它有很多優秀的特性,例如攔截請求和響應、取消請求、轉換json、客戶端防禦XSRF等。 如果還對axios不瞭解的,可以移步axios文件,axios使用說明。 安裝 cnpm install axio

一些常見的排序演算法

一、堆排序 如果還不瞭解滿二叉樹、完全二叉樹和最大堆(或大頂堆)的話,可以先了解一下。因為大頂堆要求根節點的元素大於其孩子,這樣得到大頂堆的堆頂的元素肯定是 序列中的最大值。清楚這些,就很容易理解堆排序了:先構造大頂堆,將大頂堆中堆頂元素與序列中末尾元素交換。這樣序列尾部的發生交換的元素是排列過的,剩下的

移動推薦演算法:基於簡單規則的預測

本文為轉載文章,來源為: https://blog.csdn.net/Snoopy_Yuan/article/details/72850601 一直在探索資料探勘、資料建模的案例,百度搜到這篇文章,收穫頗豐,轉載以作記錄。 前言:移動推薦演算法是阿里天池賽2015年賽題之

K-近鄰演算法的一個簡單例子

接著上一個例子進行拓展,file2matrix()函式將文件中的資料轉化為記憶體中的矩陣(陣列),autoNorm()將三列資料歸一化,這裡要注意這裡使用的歸一化方法對於極值點非常敏感,可以考慮其他的方法。datingClassTest()呼叫KNN中的classify0函式

RecyclerViewItemDecorationd的簡單使用---為item設定分割線

ItemDecorationd  為 item 設定底部分割線 效果圖(圖有點醜,但意思到) 同樣先設定 MyDeviderDecorationd 繼承 ItemDecorationd public class MyDeviderDecoration extends

資料探勘的模式發現Apriori演算法

基本概念 對於A→B 支援度(support): P(A∩B),既有A又有B的概率 置信度(Confidence Strength): conf(A→B)=sup(A∪B)sup(A)=P(B|A) 即,在A發生的事件中同時發生B的概率 例如

js一些小題

******************************************************************* 一個全域性下的函式: function test(){alert(this);} 當直接呼叫時test(); 會彈出object wind

vue-router單頁應用簡單示例

數據 prop tps div -1 可重用性 example 定位 .com 我們先來理一下思路。 圖1:main.js 引入vue,App.vue,router/index.js文件 聲明要渲染的Id為app,將App.vue中的模版渲染到入口界面(就

Python開發簡單爬蟲---爬取百度百科頁面數據

class 實例 實例代碼 編碼 mat 分享 aik logs title 一、開發爬蟲的步驟 1.確定目標抓取策略: 打開目標頁面,通過右鍵審查元素確定網頁的url格式、數據格式、和網頁編碼形式。 ①先看url的格式, F12觀察一下鏈接的形式;② 再看目標文本信息的