JavaScript是一門強大的編程語言,它常用于網頁開發。其中一個常見的應用是排序。通過JS排序算法,我們可以將一個未經排序的數組或列表按照一定順序排列。以下是介紹JS排序算法的內容。
首先是冒泡排序法(Bubble Sort)。這通常是最簡單也是最慢的排序算法。它重復地遍歷過要排序的列表,比較相鄰的兩個元素,如果順序不對就交換他們。舉個例子,我們可以這樣表述冒泡排序:假設我們有一個數組 [5,1,4,2,8],我們需要將它按照從小到大的順序排列。通過冒泡排序,第一次遍歷將會比較5和1,發現5比1大,就交換位置,結果 [1,5,4,2,8]。第二次遍歷比較5和4,發現5比4大,交換位置,結果 [1,4,5,2,8]。第三次遍歷比較5和2,又交換位置,結果 [1,4,2,5,8]。第四次遍歷比較5和8,位置不需要交換,結果 [1,4,2,5,8]。我們發現在第一輪遍歷后,8已經處于數組正確的位置上,因此最多不會超過四次遍歷。
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; }
接下來是插入排序法(Insertion Sort)。該算法的基本思路就是將數組分為已排序和未排序兩部分,遍歷未排序選項卡,依次將選項卡插入到已排序卡牌序列中,方法是比較和交換次數比起冒泡排序少得多。以 [5,1,4,2,8] 為例,我們通過選擇排序,將數組依次排序:[1,5,4,2,8]、[1,4,5,2,8]、[1,2,4,5,8]、[1,2,4,5,8],我們完成了排序。
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; }
最后是快速排序法(Quick Sort)。顧名思義,這是一種速度快的排序算法。它的原理是選擇一個基準值,將數組分成兩個子組:一個小于基準值的子組,一個大于基準值的子組。在每個子組中,依次選取基準值并對其子集應用快速排序,直到得到已排序的結果。以 [5,1,4,2,8] 為例,我們選定基準值為5,然后將數組分為 [1,4,2] 和 [8] 兩個子組。在子組 [1,4,2] 中我們選擇基準值為1,將其分為 [ ]、[4,2]、[1] 三段。最后將這三者合并得到已排序的結果。
function quickSort(arr) { if (arr.length<= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i< arr.length; i++){ if (arr[i]< pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat([pivot], quickSort(right)); }
總之,通過以上的JS排序算法介紹,我們可以看到三個常見的排序算法:冒泡排序、插入排序和快速排序。其中,冒泡排序最簡單,但是效率最慢;插入排序比冒泡排序要快一些,但還是不夠快;最快的是快速排序。學習JavaScript排序算法,讓我們在實際應用中更好地掌握和運用它。