• 数组排序


    1.冒泡排序

    function sort(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 selectSort(arr) {
    for(var i = 0; i < arr.length; i++) { //遍历数组
    var minIndex = i; //i是数组最小值的索引
    for(j = i + 1; j < arr.length; j++) {
    if(arr[minIndex] > arr[j]) {
    minIndex = j;
    }
    }
    if(i != minIndex) { //假设的刚好就是最小值。
    temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
    }
    }
    return arr;

    }

    3.快速排序

    思路:获取数组的中间值,截取出来

       遍历数组,用数组的每一项去和中间值比较,比较的结果分别放在两个数组里面

       递归:将分隔到左右的两个数组在排序,知道数组的长度等于1

       将结果通过concat进行连接

    function quickSort(array){
    if(Array.isArray(array)){
    if(array.length<=1){
    return array;
    }//递归一定要写初始值
    var minIndex = Math.floor(array.length/2);//取出数组中间值的下标
    var minValue = array.splice(minIndex,1)[0];//通过下标把数组的中间值截取出来
    var left = [];//定义一个新数组,用来存放比中间值小的值
    var right = [];//定义一个新数组,用来存放比中间值大的值
    for(var i = 0;i<array.length;i++){
    if(array[i]<minValue){
    left.push(array[i]);
    }else{
    right.push(array[i]);
    }
    }
    return quickSort(left).concat(minValue,quickSort(right));
    }else{
    alert("好好写");
    }
    }

  • 相关阅读:
    leetcode-----16. 最接近的三数之和
    leetcode-----15. 三数之和
    leetcode-----14. 最长公共前缀
    leetcode-----13. 罗马数字转整数
    leetcode-----12. 整数转罗马数字
    leetcode-----11. 盛最多水的容器
    leetcode-----10. 正则表达式匹配
    leetcode-----9. 回文数
    leetcode-----8. 字符串转换整数 (atoi)
    leetcode-----7. 整数反转
  • 原文地址:https://www.cnblogs.com/sun765/p/7930762.html
Copyright © 2020-2023  润新知