??作者主頁:IT技術分享社區
??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。
??個人榮譽: 數據庫領域優質創作者🏆,華為云享專家🏆,阿里云專家博主🏆?
??個人博客:IT技術分享社區
??公眾號/小程序:IT技術分享社區 (運營五年)
??好文章點贊 👍 收藏 ?再看,養成習慣
?
目錄
1、冒泡排序
2、選擇排序
3、快速排序
1、冒泡排序
依次比較相鄰的兩個元素,如果后一個小于前一個,則交換,這樣從頭到尾一次,就將最大的放到了末尾。
動畫演示:
? ? ? ? ?
? ? ? ? ??
?? ? ? ?
代碼:
function bubbleSort(arr) {var len = arr.length;for (var i = 0; i < len - 1; i++) {for (var j = 0; j < len - 1 - i; j++) {if (arr[j] > arr[j+1]) { // 相鄰元素兩兩對比var temp = arr[j+1]; // 元素交換arr[j+1] = arr[j];arr[j] = temp;}}}return arr;
}
2、選擇排序
選擇排序的原理:每次都找一個最大或者最小的排在開始即可。
-
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
-
再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。
-
重復第二步,直到所有元素均排序完畢。
動畫演示:
代碼:
function selectionSort(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;
}
3、快速排序
插入排序也比較簡單。就像打撲克一樣,依次將拿到的元素插入到正確的位置即可。
-
將第一排排序序列第一個元素看做一個有序序列,把第二個元素到最后一個元素當成是未排序序列。
-
從頭到尾依次掃描未排序序列,將掃描到的每個元素插入有序序列的適當位置。(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的后面。)
動畫演示:
? ? ? ? ?
代碼:
function insertionSort(arr) {var len = arr.length;var preIndex, current;for (var i = 1; i < len; i++) {preIndex = i - 1;current = arr[i];while(preIndex >= 0 && arr[preIndex] > current) {arr[preIndex+1] = arr[preIndex];preIndex--;}arr[preIndex+1] = current;}return arr;
}