首先定義乙個陣列
var arr = [1,3,5,2,4,6];
原理:
相鄰的兩個數字依次對比,若前者大交則換位置,並且重複操作,直到所有數字依次排好序。
程式的優化
1,內層迴圈優化1 : 內層迴圈次數-1
當前位和下一位比較 i 和 i+1 比較
當前迴圈的倒數第二位,已經和最後一位進行比較
當前迴圈的最後一位,只需要通過倒數第二位,參與比較
不用參與迴圈
2,外層迴圈優化 :
如果有n個單元參加排序,只需要迴圈排序n-1次
最後一次迴圈排序,會將最後兩個數值的大小排序確定
剩下最後乙個單元,沒有迴圈排序,但是大小已經確定,不需要再次迴圈排序
3,內層迴圈優化2 :
通過外層迴圈變數,定義是從 0 開始的迴圈數值
每次內層迴圈,次數,再減去 外層迴圈變數 的數值
//氣泡排序
// 外層迴圈,迴圈執行排序操作,迴圈次數是陣列單元個數-1
for(var j = 0 ; j <= (arr.length-1) -1 ; j++)}}
console.log
(arr)
;
執行結果:
原理:
在未排序的序列中找到最小的數字,放到已排序的序列起始的位置,然後此數字不在參與迴圈,
再從剩下的數字重複以上操作,直到排序結束。
定義乙個陣列
var arr = [1,3,5,2,4,6];
外層迴圈:實現迴圈次數,是陣列單元個數-1
內層迴圈:每次迴圈,將本次迴圈找出來的最小值,與起始位置進行數值交換
先預設起始位置的數值為最小值,儲存起始位置的索引值
之後從起始位置的下乙個位置開始迴圈,生成之後的所有索引下標,
如果之後位置上的數值,小於儲存的索引位置的數值,就儲存這個數值的索引
迴圈結束,變數中儲存本次內層迴圈選擇出的最小值的索引下標
進行比較判斷,如果這個索引值,不是起始索引值,就交換兩個索引值對應的資料
程式的優化:
外層優化:之前比較出的數值,不參與下一次的比較
內層優化:從起始位置的下乙個位置開始迴圈
//選擇排序
var arr = [3,44,38,5,47,25,36,2,79,8,1];
// console.log
(arr)
; // 外層迴圈,實現排序迴圈次數,次數是單元個數 -1
for(var j = 0 ; j <= arr.length-1 -1 ; j++)
}// 內層迴圈執行完畢,儲存的索引下標如果不是起始的索引j
// 就交換 min中儲存的索引下標對應的數值 和 j索引下標應的數值
if(min != j)
} console.log
(arr)
;
執行結果;
方法原理;首先新建乙個空陣列,然後遍歷要去重的陣列,用indexof方法,當 indexof 為 -1時把值存入新陣列。
定義乙個陣列
//陣列去重
var arr = [1,1,3,2,4,5,2,3,5];
function quchong(arr)
} return newarr;
}
var newarr = quchong
(arr)
; console.log
(newarr)
;
氣泡排序 選擇排序 陣列去重
遍歷所有元素 從小到大排序 依次比較相鄰的兩個元素 小的放前面,大的放後面 效率很低 動態圖如下所示 示例 var arr 10 18,1 6,9 20,7 90 for var i 0 i arr.length 1 i console.log arr 執行結果如下 先找到所有元素中的最小值,然後將...
氣泡排序 陣列去重
陣列去重 第一種splice方法 function quchong var elements 2,2,5,3,6,6,7,8 console.log before elements 2,2,5,3,6,6,7,8 quchong elements console.log after elements...
排序陣列去重
給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1,2。你不...