氣泡排序,選擇排序,陣列去重

2021-10-04 06:21:11 字數 1908 閱讀 5208

首先定義乙個陣列

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。你不...