當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript 几种排序算法实现(冒泡、选择、插入、归并、快速排序)
生活随笔
收集整理的這篇文章主要介紹了
JavaScript 几种排序算法实现(冒泡、选择、插入、归并、快速排序)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 冒泡
// 冒泡 - 每次循環, 將兩兩中偏大的元素移動到右邊 for (let i = 0; i < arr.length - 1; i++) {for (let j = i; j < arr.length; j++) {if (arr[i] > arr[j]) {[arr[i], arr[j]] = [arr[j], arr[i]]}} } console.log(arr)?
??
2. 選擇排序
選擇排序算法是一種原址比較排序算法。選擇排序大致的思路是找到數據結構中的最小值并將其放置在第一位,接著找到第二小的值并將其放在第二位。
// 選擇 - 找到最小的, 放在第一位; 找到第二小的, 擋在第二位 for (let i = 0; i < arr.length; i++) {let min_index = i;for (let j = i; j < arr.length; j++) {if (arr[min_index] > arr[j]) {min_index = j}}if (i !== min_index) {[arr[i], arr[min_index]] = [arr[min_index], arr[i]]} } console.log(arr)?
?
3. 插入排序
// 插入 - 找到合適的位置, 把它插進去 for (let i = 0; i < arr.length; i++) {let j = i;let tmp = arr[i]while (j > 0 && arr[j - 1] > tmp) {arr[j] = arr[j - 1];j--;}arr[j] = tmp; } console.log(arr)?
4. 歸并排序
// 歸并 - 采用分治思想, 將原數組分成只有一個位置的小數組, 接著講小數組歸并成大數組 let mergeSortRec = function (arr) {let length = arr.length;if (length === 1) {return arr;}let mid = Math.floor(length / 2);let left_array = arr.slice(0, mid);let right_array = arr.slice(mid, length);return merge(mergeSortRec(left_array), mergeSortRec(right_array)); }let merge = function (left_array, right_array) {let result = [];let il = 0;let ir = 0;while (il < left_array.length && ir < right_array.length) {if (left_array[il] < right_array[ir]) {result.push(left_array[il++])} else {result.push(right_array[ir++])}}while (il < left_array.length) {result.push(left_array[il++])}while (ir < right_array.length) {result.push(right_array[ir++])}return result; } console.log(mergeSortRec(arr))?
5. 快速排序
?
// 快排 - 采用分治思想, 劃分主元 let quick = function (arr, left_ptr, right_ptr) {let index;if (arr.length > 1) {// 劃分主元, 并執行交換index = partition(arr, left_ptr, right_ptr);if (left_ptr < index - 1) {quick(arr, left_ptr, index - 1);}if (index < right_ptr) {quick(arr, index, right_ptr);}} } let partition = function (array, left_ptr, right_ptr) {let pivot = array[Math.floor((left_ptr + right_ptr) / 2)];let i = left_ptr;let j = right_ptr;while (i <= j) {while (array[i] < pivot) {i++;}while (array[j] > pivot) {j--;}if (i <= j) {[aarrayrr[i], array[j]] = [array[j], array[i]];}i++;j--;}return i; }quick(arr, 0, arr.length - 1) console.log(arr)?
轉載于:https://www.cnblogs.com/mykiya/p/11006708.html
總結
以上是生活随笔為你收集整理的JavaScript 几种排序算法实现(冒泡、选择、插入、归并、快速排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: object数据类型
- 下一篇: 『 效率工具 』Spring Boot版