冒泡
n 次比較相鄰兩數并交換找到最值,然后 n-1 次比較找到次值……較小的數字像氣泡一樣浮出。
這里我引入flag排除,已經有序卻一直遍歷
function bubbleSort(arr){ const n=arr.length; let flag=1,i,j; for(i=0;i<n-1&&flag;i++){ flag=0; for(j=0;j<n-i-1;j++){ if(arr[j]>arr[j+1]){ const swap=arr[j]; arr[j]=arr[j+1]; arr[j+1]=swap; flag=1; } } } return arr; }
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
簡單選擇排序
和冒泡原理相似,但是少了很多交換,多了一個暫存最值的空間。
n 次比較相鄰兩數后最多只交換一次將最值放到位置上,然后 n-1 次比較找到次值
冒泡更適合基本有序的序列
function selectSort(arr) { const n=arr.length; let i,j,minIndex; for(i=0;i<n-1;i++){ minIndex=i; for(j=i+1;j<n;j++){ if(arr[j]<arr[minIndex]){ minIndex=j; } } if(minIndex!=i){ const swap=arr[i]; arr[i]=arr[minIndex]; arr[minIndex]=swap; } } return arr; }
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
快速排序
平均時間復雜度=O(n logn)
function quick_part(arr,left,right){ var l = left; var r = right; var basic= arr[left]; if(left >= right){ return; } while(l!=r){ while(arr[r] > basic && l < r){ r--; } while(arr[l] <= basic && l < r){ l++; } if(l!=r){ const swap = arr[l]; arr[l] = arr[r]; arr[r] = swap; } } arr[left] = arr[l] arr[l] = basic; quick_part(arr,left,l-1); quick_part(arr,l+1,right); } function quickSort(arr){ quick_part(arr,0,arr.length-1); }
轉自:csdn 作者:tututu333
藍藍設計( www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務