常见的四种排序算法------JS实现
1、实现数组的排序并去重
var arr = [1, 6, 9, 2, 4, 6, 7, 2, 1]; var m = new Map(); arr.forEach((item) => { m.has(item) ? m.set(item, m.get(item) + 1) : m.set(item, 1); // if(m.has(item)){ // m.set(item,m.get(item)+1) // }else{ // m.set(item,1) // } }); console.log(m);//[] var res=[]; arr.forEach((item)=>{ res[item]?res[item]=res[item]+1:res[item]=1 }) // console.log(res); var newArr=[]; res.forEach((item,index)=>{ for(;item>0;item--){ newArr.push(index) } }) console.log(newArr);//[ 1, 2, 4, 6, 7, 9]
2.ES6实现冒泡排序
function bubble_sort(arr){ var length=arr.length for(var i=0;i<length;i++){ for(var j=0;j<length-1-i;j++){ if(arr[j]>arr[j+1]){ [arr[j],arr[j+1]]=[arr[j+1],arr[j]] } } } return arr } console.log(bubble_sort([4,46,6,2,1,56,78,69]));//[1, 2, 4, 6, 46, 56, 69, 78]
3.选择排序实现
function selection_sort(arr){ var length=arr.length var min; for(var i=0;i<length-1;i++){ min=i; for(var j=i+1;j<length;j++){ if(arr[min]>arr[j]){ min=j; } } if(min!==i){ [arr[min],arr[i]]=[arr[i],arr[min]] } } return arr; } var arr1 = [4, 46, 6, 2, 1, 56, 78, 69]; console.log(selection_sort(arr1));//[1, 2, 4, 6, 46, 56, 69, 78]
4.快速排序实现
function quick_sort(arr) { if(arr.length<=1)return arr; let index = Math.floor(arr.length / 2); let item = arr.splice(index, 1)[0]; let left = []; let right = []; for (let i = 0; i < arr.length; i++) { arr[i] < item ? left.push(arr[i]) : right.push(arr[i]); } return quick_sort(left).concat([item],quick_sort(right)) } var arr=[1,4,1,2,6,2,6,2,9,7] console.log(quick_sort(arr));//[1, 1, 2, 2, 4, 6, 6, 7, 9]
5.计数排序实现
function count_sort(arr) { var res = [], arr1 = []; arr.forEach((item) => { res[item] ? (res[item] = res[item] + 1) : (res[item] = 1); }); res.forEach((item, index) => { for (; item > 0; item--) { arr1.push(index); } // arr1.reverse() }); return arr1; } console.log(count_sort(arr));