排序的方法:

//方法一:sort:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數組排序</title> 6 <script> 7 var arr = [9,1,2,5,7,4,8,6,3,5]; 8 9 arr.sort(); 10 </script> 11 </head> 12 <body> 13 </body> 14 </html>
//方法二:選擇排序法:
思想:每趟從待排序的記錄中選出最小關鍵字,順序放在已排序的記錄序列末尾,直到所有排序結束爲止。html
流程:(1)從待排序序列中,找到關鍵字最小的元素;算法
(2)若是最小元素不是待排序序列的第一個元素,將其和第一個元素互換;數組
(3)從餘下的 N - 1 個元素中,找出關鍵字最小的元素,重複(1)、(2)步,直到排序結束。ui
示意圖:spa
代碼:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數組排序</title> 6 <script> 7 var arr = [9,1,2,5,7,4,8,6,3,5]; 8 9 function selectedSort(arr) { 10 for (var i = 0; i < arr.length; i++) { 11 for (var j = i + 1; j < arr.length; j++) { 12 if (arr[i] > arr[j]) { 13 var num = arr[i]; 14 arr[i] = arr[j]; 15 arr[j] = num; 16 } 17 } 18 //document.write(i+":"+arr+"<br>"); 19 } 20 } 21 22 </script> 23 </head> 24 <body> 25 </body> 26 </html>
//方法三:冒泡排序法:
思想:冒泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素「浮」到頂端,最終達到徹底有序。3d
示意圖:指針

代碼:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數組排序</title> 6 <script> 7 var arr = [9,3,1,4,2,7,8,6,5]; 8 9 function bubbleSort(arr) { 10 for (var i = arr.length - 1; i >= 0; i--) { 11 for (var j = 0; j < i; j++) { 12 if (arr[j] > arr[j + 1]) { 13 var num = arr[j]; 14 arr[j] = arr[j + 1]; 15 arr[j + 1] = num; 16 } 17 } 18 } 19 } 20 21 /*document.write("冒泡排序前:" + arr); 22 bubbleSort(arr); 23 document.write("冒泡排序後:" + arr);*/ 24 25 </script> 26 </head> 27 <body> 28 </body> 29 </html>
//方法四:快速排序法:
思想:經過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的全部數據都比另一部分的全部數據都要小,而後再按此方法對這兩部分數據分別進行快速排序,整個排序過程能夠遞歸進行,以此達到整個數據變成有序序列。code
流程:設要排序的數組是A[0]……A[N-1],首先任意選取一個數據(一般選用數組的第一個數)做爲關鍵數據,而後將全部比它小的數都放到它前面,全部比它大的數都放到它後面,這個過程稱爲一趟快速排序。值得注意的是,快速排序不是一種穩定的排序算法,也就是說,多個相同的值的相對位置也許會在算法結束時產生變更。htm
示意圖:blog
代碼:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數組排序</title> 6 <script> 7 var arr = [49,38,65,97,76,13,27,49]; 8 9 var start = 1 ; 10 function quicklySort(arr, left, right) { 11 if (left < right) { 12 var i = left; 13 var j = right; 14 var key = arr[left]; 15 console.log("*************************"); 16 document.write("第"+start+"趟快速排序前:" + arr+"<br>"); 17 18 while (j != i) { 19 console.log("初始時:key=", key, ",i=", i, ",j=", j); 20 21 while (j > i) { 22 if (arr[j] < key) { 23 //console.log("向前一次{i=",i,",j=",j,"}"); 24 var temp = arr[i]; 25 arr[i] = arr[j]; 26 arr[j] = temp; 27 //console.log("交換後:",arr); 28 break; 29 } 30 j--; 31 } 32 33 while (i < j) { 34 if (arr[i] > key) { 35 console.log("向後一次{i=", i, ",j=", j, "}"); 36 var temp = arr[i]; 37 arr[i] = arr[j]; 38 arr[j] = temp; 39 console.log("交換後:", arr); 40 break; 41 } 42 i++; 43 } 44 console.log("結束時:key=", key, ",i=", i, ",j=", j); 45 } 46 document.write("第"+start+"趟快速排序後:" + arr+"<br>"); 47 start++; 48 console.log("*************************"); 49 quicklySort(arr,left,i-1); 50 quicklySort(arr,i+1,right); 51 } 52 } 53 54 quicklySort(arr, 0, arr.length - 1); 55 56 57 </script> 58 </head> 59 <body> 60 </body> 61 </html>