常见的四种排序算法------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));

 

posted @ 2022-04-27 20:38  倚栏听风时  阅读(31)  评论(0编辑  收藏  举报