js中的排序算法

1.冒泡排序(小->大)
工作原理:
第一趟 相邻两个数组值进行比较 如果前一个数值大于后一个数值 ,则交换他们的位置
第二趟 相邻两个数组值进行比较 如果前一个数值大于后一个数值 ,则交换他们的位置
第N趟…
第一个for循环控制趟数
第二个for 循环控制每一趟相邻两个数组元素的比较

代码实现:

 var m=new Array(1,9,18,3,7,0,12);
        for(var i=0;i< m.length;i++)
        {     var temp=null;
          for(var k=0;k< m.length;k++ )
          {
             if(m[k]>m[k+1]){
                 temp=m[k];
                 m[k]=m[k+1];
                 m[k+1]=temp;
             }
          }
        }
        console.log(m);
        结果:0 1 3 7 9 12 18

2.选择排序
工作原理:
第一趟 数组中m[0] 与数组后面的元素进行比较 如果m[0]大于后面数值 ,则交换他们的位置
第二趟 数组中m[1] 与数组后面的元素进行比较 如果m[1]大于后面数值 ,则交换他们的位置
第n趟 数组中m[n-1] 与数组后面的元素进行比较 如果m[n-1]大于后面数值 ,则交换他们的位置
第一个for循环控制趟数
第二个for循环控制每一趟中 被比较数字 和后面数字之间的比较

代码实现:

  var m=new Array(1,9,18,3,7,0,12);
    for(var i=0;i< m.length;i++)
    {      var temp=null;
        for(var k=i+1;k< m.length;k++)
        {
            if(m[i]>m[k])
            {
                temp=m[i];
                m[i]=m[k];
                m[k]=temp;
            }
        }
    }
   console.log(m);
   结果:0 1 3 7 9 12 18

3.快速排序
工作原理:
选处2数组的基准值(length/2) 让其与数组的其他元素进行比较,如果小于基准值则放在left[]数组,否则放在right[]数组
left[]数组和right[]数组继续调用上述方法,直至数组长度小于2
代码实现:

var str = new Array(1, 9, 18, 3, 7, 0, 12);
function kp(m) {
    if (m.length < 2) {
        return m;
    }
    var left = [];
    var right = [];
    var n = parseInt(m.length / 2);//js中强制类型转化(只有对string类型,函数才能正常运行)parseInt();parsefloat();
    var k = m.splice(n, 1)[0];
    for (var i = 0; i < m.length; i++) {
        if (m[i] >= k) {
            right.push(m[i]);
        }
        else  {
            left.push(m[i]);
        }

    }
    return kp(left).concat(k).concat(kp(right));
}
console.log(kp(str));

4.数组对象中sort()方法

    var m=[4,8,2,10,0,9,7];
    var a=m.sort(function(a,b){
        return a-b;
    });
    console.log(a);
    结果:0 2 4 7 8 9 10

猜你喜欢

转载自blog.csdn.net/weixin_44746630/article/details/90372785
今日推荐