冒泡,选择,插入,快速,归并排序(JavaScript)代码实现
目录
前言
一、冒泡排序
二、选择排序
三、插入排序
四、快速排序
五、归并排序
前言
前端中常见的排序算法。
一、冒泡排序
let arr=[10,6,9,3,5,1,4]function Sort(arr){for (let i = 0; i < arr.length; i++) {for (let j = 0; j < arr.length-i; j++) {if(arr[j]>arr[j+1]){let temp=arr[j]arr[j]=arr[j+1]arr[j+1]=temp}}}return arr
}
二、选择排序
let arr=[10,6,9,3,5,1,4]function Sort(arr) {for(let i=0;i<arr.length;i++){let min=ifor (let j = i+1; j < arr.length; j++) {if(arr[j]<arr[min]){min=j} }let temp=arr[i]arr[i]=arr[min]arr[min]=temp}return arr
}
三、插入排序
let arr=[10,6,9,3,5,1,4]function Sort(arr){for(let i=0;i<arr.length;i++){let current=arr[i]let j=i-1while (j>=0 && current<arr[j]) {arr[j+1]=arr[j]j--}arr[j+1]=current}return arr
}
四、快速排序
let arr=[10,6,9,3,5,1,4]function Sort(arr){if(arr.length<1) return arr let mid=Math.floor(arr.length/2)let midValue=arr.splice(mid,1)let left=[]let right=[]for (let i = 0; i < arr.length; i++) {if(arr[i]<midValue[0]){left.push(arr[i])}else{right.push(arr[i])}}return [...Sort(left),...midValue,...Sort(right)]
}
五、归并排序
let arr=[10,6,9,3,5,1,4]function merge(leftArr,rightArr){let result=[]while (leftArr.length && rightArr.length) {result.push(leftArr[0]<rightArr[0] ? leftArr.shift():rightArr.shift())}return result.concat(leftArr).concat(rightArr)
}function Sort(arr){if(arr.length<=1) return arrlet min=Math.floor(arr.length/2)return merge(Sort(arr.slice(0,min)),Sort(arr.slice(min)))
}