標籤:javascript快速排序 、python快速排序、 java快速排序、go快速排序
常見的內部排序演算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。用一張圖概括:
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/95/C5/wKioL1kZfUqAW6T8AAHcPIbdiTU442.png-wh_500x0-wm_3-wmp_4-s_1544906761.png" title="12.png" alt="wKioL1kZfUqAW6T8AAHcPIbdiTU442.png-wh_50" />
選擇排序
選擇排序是一種簡單直觀的排序演算法,無論什麼資料進去都是O(n2) 的時間複雜度。所以用到它的時候,資料規模越小越好。唯一的好處可能就是不佔用額外的記憶體空間了吧。通俗來說就是你們中間誰最小誰就出列,站到隊列的最後邊,然後繼續對著剩餘的無序數組說你們中間誰最小誰就出列,站到隊列的最後邊,一直到最後一個,繼續站到最後邊,這樣數組就有了順序,從小到大。
1、演算法步驟
a、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
b、再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
c、重複第二步,直到所有元素均排序完畢。
2、動圖示範
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/95/C5/wKioL1kZfYiR-GAjAAAs5uKwBWE463.png-wh_500x0-wm_3-wmp_4-s_825999891.png" title="13.png" alt="wKioL1kZfYiR-GAjAAAs5uKwBWE463.png-wh_50" />
3、JavaScript 代碼實現
functionselectionSort(arr) { var len =arr.length; var minIndex, temp; for (var i =0; i < len -1; i++) { minIndex = i; for (var j = i +1; j < len; j++) { if (arr[j] < arr[minIndex]) { // 尋找最小的數 minIndex = j; // 將最小數的索引儲存 } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex]= temp; } return arr;}
4、Python 代碼實現
defselectionSort(arr): for i inrange(len(arr)-1): for j inrange(i+1, len(arr)): if arr[j] < arr[i]: arr[i], arr[j] = arr[j], arr[i] return arr
5、Java實現
publicstaticvoid selectSort(int[]numbers){ int size = numbers.length; //數組長度 int temp = 0 ; //中間變數 for(int i = 0 ; i <size ; i++){ int k = i; //待確定的位置 //選擇出應該在第i個位置的數 for(int j = size -1 ; j> i ; j--){ if(numbers[j] < numbers[k]){ k = j; } } //交換兩個數 temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } }
6、Go代碼實現
funcselectionSort(arr []int) []int { length:=len(arr) fori:=0; i < length-1; i++ { min:= i forj:= i + 1; j < length; j++ { if arr[min] > arr[j] { min = j } } arr[i], arr[min] = arr[min], arr[i] } return arr}
希望可以一起交流技術,感興趣可以加qq邀請入群: 525331804 全棧技術開發qq群:581993430
本文出自 “知乎技術” 部落格,請務必保留此出處http://liuzhiying.blog.51cto.com/5850988/1925991
JavaScript 、Python Java、Go演算法系列之【快速排序】篇