js中的几种排序

1.冒泡排序

比较简单的写法:

 function bubbleArra(a) {
                let arr = a;
                let length = arr.length;
                while (length) {
                数组有多长就循环几次进行左右比较,每次比较就会找到一个最大的放到最后
                    for (let j = 0; j < length; j++) {
                        let left = arr[j];
                        let right = arr[j + 1];
                        if (left > right) {
                            arr[j] = right;
                            arr[j + 1] = left;
                        }
                    }
                    length-;
                }
                return arr;
            }

比较严谨的写法:

function bubbleArray(arr){
      for(var i=0;i<arr.length-1;i++){
      数组有多长就循环几次进行左右比较,每次比较就会找到一个最大的放到最后(减少了后面不必要的比较)
          for(var j=0;j<arr.length-i-1;j++){
              if(arr[j]>arr[j+1]){
                  var temp=arr[j];
                  arr[j]=arr[j+1];
                  arr[j+1]=temp;
              }
          }
      }
      return arr;
  }

2.选择排序

 function selectArray(arr){
      var min,temp;
      for(var i=0;i<arr.length-1;i++){
      //首先随机设置一个最小值
          min=i;
          for(var j=i+1;j<arr.length;j++){
          //循环后面的数组
              if(arr[j]<arr[min]){
                  min = j;
                  //如果遇到比arr[min]还小的值,就交换index值
              }
          }
          temp=arr[i];
          //把刚开始定义的最小值赋给一个变量
          arr[i]=arr[min];
          //把刚才循环比较出的最小值赋给开始定义的名义上的最小值
          arr[min]=temp;
			//继续进行后续的比较
      }
      return arr;
      }

3.二分法排序(快速排序)

function quickArray(arr){
      if(arr.length<2){return arr}
如果数组长度小于二,就返回数组
      var left=[],right=[],mid=arr.splice(Math.floor(arr.length/2),1);
		随机找一个中介值进行比较
      for(var i=0;i<arr.length;i++){
            if(arr[i]<mid){
                left.push(arr[i]);
            }else {
                right.push(arr[i])
            }
      }
      return quickSort(left).concat(mid,quickSort(right))
      拼接排序的数组
  }
 console.log(quickSort([6,1,2,4,3,5]))

4.sort(神器)

function sortNumber(a,b)
{
return a - b
}
document.write(arr.sort(sortNumber))

猜你喜欢

转载自blog.csdn.net/liangkaihuaen/article/details/96480363
今日推荐