陣列的三種主要排序

2022-07-20 16:06:17 字數 1763 閱讀 4810

介紹一下我自己,是一名在校培訓的初級程式設計師,所以寫的東西可能會有bug,還請大神多多指教

第一種是氣泡排序,簡單的來形容就是兩兩比較,就好像是一組人比身高,下面讓我們舉個例子

假設有乙個這樣的陣列 var arr = [10,9,8,7,6],來用氣泡排序來進行排序
第一輪   有5個數進行比較,兩兩比較,較大的數向後排列,最後得到乙個最大的數 10

9 10 8 7 6  

9 8 10 7 6

9 8 7 10 6

9 8 7 6 10

第二輪  去除第一輪得到的最大數10,剩餘的數進行排列,得到乙個9,再進行下一輪

8 9 7 6

8 7 9 6

8 7 6 9

第三輪7 8 6

7 6 8

第四輪 7 6 1

6 7比到第四輪時就可以得到我們想要的結果了--最小數6

【注】:通過以上演變我們得出乙個結論也就是說比較的次數等於陣列的長度減一; 每一次的比較內部需要兩兩比較的次數是 陣列的長度-1-i
接下來是**部分

var arr = [10,9,8,7,6];

var temp;

for(var i=0;ifor(var j=0;jif(arr[j]>arr[j+1])}}

console.log(arr);

第二種是選擇排序,類似於打擂台,你必須要跟每乙個對手打架,贏得站在第一位,輸了則要向後排

同樣是上面的陣列 var arr = [10,9,8,7,6],這次用選擇排序來進行陣列排序

[10,9,8,7,6];

和氣泡排序相反,我們每輪得到是乙個最小的數

第一輪比較    7

9 10 8 7 6

8 10 9 7 6

7 10 9 8 6

6 10 9 8 7

第二輪   8

9 10 8 7

8 10 9 7

7 10 9 8

第三輪   9

9 10 8

8 10 9

第四輪   10

9 10

【注】:首先看比較次數的規律:陣列的長度-1;每輪比較的規律:每次比較的位置都是當前數字的位置+1進行的比較

**部分:

function selection(arr) }}

return arr;

}console.log(arr);

第三種是快速排序,它是三中排序中效能最好的

排序概念:將乙個雜亂無章的陣列進行乙個快速排序,可以先從乙個陣列中取乙個中間值,將乙個陣列一分為2,左邊的陣列跟中間值進行比較,小的放在左邊,大的放在右邊。比較完畢後再次取中間值,再次比較一次類推

思路1、取的中間值,以及中間值的下標

2、建立乙個left空陣列,存放小於中間值的資料

3、建立乙個right空陣列,存放大於中間值的資料

4、遞迴的終止條件,如果陣列的長度等於1的時候就返回陣列

5、迴圈將陣列一分為二

6、遞迴

**部分

var arr = [10,66,3,64,2,98];

function fn(arr)

for(var i=0;iif(index !=i && arr[i]left.push(arr[i]);

}if(index != i && arr[i]>=mid)

}return fn(left).concat(mid).concat(fn(right));

}console.log(fn(arr));

陣列常用的三種排序

1 class arithmetic 5 原理 將陣列的元素兩兩作比較,然後依次將最大值往後面排 6for int i 0 i num1.length i 13 14 15for int element num1 1819 system.out.println t t t 選擇排序 20int nu...

Shader 三種主要UnityShader形式

unity shader最重要的任務是指定各種著色器所需的 這些著色器 可以寫在subshader語義塊中 如 表面著色器 也可以寫在pass語義塊中 如 頂點 片元著色器 固定函式著色器 在unity中,我們可以使用三種形式來編寫unity shader,而不管使用哪種形式,真正意義上的shade...

PHP中陣列的三種排序方法

一 氣泡排序法 說明 找到最大的數,排列到最後面,然後繼續找 例 arr array 3,5,1,0,2 for i 0 i arr j 1 理解 3,5,1,0,2 從第乙個數開始往後比較,如果比後面的數大則與後面的數調位置 第一次,3小於5,那麼不變 第二次,5大於 1,那麼變成 3,1,5,0...