• js中排序方法


    有些代码一两个月都会忘了,有空多做下总结,记录下来,等需要用到的时候可以来翻翻总结的博客。写技术博客,对自己是一种总结,对别人,是一种参考。

    1.sort()方法

    var ar1=[2,4,6,8,1,3]
    var ar2=[2,16,36,8,56]
    ar1.sort()
    ar2.sort()//这个方法值只能排序第一位数  也可以字符串进行排序
    console.log(ar1)//[1,2,3,4,6,8]
    console.log(ar2)//[16, 2, 36, 56, 8]
    
    ar2.sort(function(a,b){
        return a-b //a-b为升序
        //return b-a  //b-a为降序
    })
    console.log(ar2)//[2, 8, 16, 36, 56]

    2.reverse()方法

    var ar1=[2,4,6,8,1,3]
    ar1.reverse()//此方法为倒序,也就是反过来。并不会进行大小排序
    console.log(ar1)//[3, 1, 8, 6, 4, 2]

    3.冒泡排序

    //每轮依次比较相邻两个数的大小,后面比前面小则交换
    var b=0//设置用来调换位置的值
    var a=[1,9,33,2,5,34,23,98,14]//冒泡排序
    for(var i=0;i<a.length;i++){
        for(var j=0;j<a.length;j++){
            if(a[j]>a[j+1]){
                b=a[j]
                a[j]=a[j+1]
                a[j+1]=b
            }
        }
    }
    console.log(a)//[1, 2, 5, 9, 14, 23, 33, 34, 98]

    4.选择排序

    //拿第一个数与后面数相比较,如果比后面的数大则交换
    //拿第二个数与后面的数比较,如果比后面的数大则交换
    //直到比较到倒数第二个数,最后一个数不用比较
    var b=0//设置用来调换位置的值
    var a=[1,9,33,2,5,34,23,98,14]//冒泡排序
    for(var i=0;i<a.length;i++){
        for(var j=i;j<a.length;j++){
            if(a[j]>a[j+1]){
                b=a[j]
                a[j]=a[j+1]
                a[j+1]=b
            }
        }
    }
    console.log(a)//[1, 2, 5, 9, 14, 23, 33, 34, 98]

    5.快速排序

    先从数列中取出一个数作为基准数

    分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边

    再对左右区间重复第二步,直到各区间只有一个数

    function quickSort(arr, i, j) {
      if(i < j) {
        let left = i;
        let right = j;
        let mid = Math.floor((left+right)/2);
        let temp = arr[left];
        arr[left] = arr[mid];
        arr[mid] = temp;
        let pivot = arr[left];
        while(i < j) {
          while(arr[j] >= pivot && i < j) {  // 从后往前找比基准小的数
            j--;
          }
          if(i < j) {
            arr[i++] = arr[j];
          }
          while(arr[i] <= pivot && i < j) {  // 从前往后找比基准大的数
            i++;
          }
          if(i < j) {
            arr[j--] = arr[i];
          }
        }
        arr[i] = pivot;
        quickSort(arr, left, i-1);
        quickSort(arr, i+1, right);
        return arr;
      }
    }
    一辈子说长不长,说短不短,努力做好两件事:第一件事爱生活,爱身边的人,爱自己;第二件事是好好学习,好好工作,实现自己的人生价值观,而不仅仅是为了赚钱
  • 相关阅读:
    《Java程序设计》终极不改版【下】
    《Java程序设计》终极不改版【下】
    !终端伪装测试之fuck校园网
    !终端伪装测试之fuck校园网
    关于js中单双引号以及转义符的理解
    关于js中单双引号以及转义符的理解
    关于js中单双引号以及转义符的理解
    正则表达式【第二卷】
    正则表达式【第二卷】
    正则表达式【第二卷】
  • 原文地址:https://www.cnblogs.com/dcyd/p/12399070.html
Copyright © 2020-2023  润新知