zoukankan      html  css  js  c++  java
  • 算法-排序数组

    给你一个整数数组 nums,请你将该数组升序排列。

    示例 1:

    输入:nums = [5,2,3,1]
    输出:[1,2,3,5]
    示例 2:

    输入:nums = [5,1,1,2,0,0]
    输出:[0,0,1,1,2,5]

    方法1

    利用sort方法进行排序,最佳

    /**
     * @param {number[]} nums
     * @return {number[]}
     */
    var sortArray = function(nums) {
        return nums.sort((a,b)=>{return a-b});
    };

    数组.sort(参数)

    方法用于对数组的元素进行排序。

    没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

    • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    • 若 a 等于 b,则返回 0。
    • 若 a 大于 b,则返回一个大于 0 的值。

    方法2

    快速排序

    选一个参照数target,对比每一项和target的大小,大于target放在right数组,小于target放在left数组,递归对比,得到最后分别排好序的left,right两个数组,再将target拼接上去,就得到了排序好的数组

    不适用数组数量特别大的时候 会报错 Maximum call stack size exceeded  内存溢出

    var sortArray = function(nums) {
       if(nums.length<2) return nums;
       var target=nums[0];
       var left=[],right=[];
       for(var i=1;i<nums.length;i++){
           if(nums[i]<target){
    left.push(nums[i])
           }else{
    right.push(nums[i])
           }
       }
       return sortArray(left).concat([target],sortArray(right))
    };
    

     

    方法3

    冒泡排序

    对比相邻两个位置的大小,0和1对比,1再次和2相比,最终length-1次得出最后的顺序;length-1次的时候会比较length-1和length的大小

    var sortArray = function(nums) {
        for(var i=0;i<nums.length-1;i++){
            for(var j=0;j<nums.length-1-i;j++){
                if(nums[j]>nums[j+1]){
                    var target=nums[j];
                    nums[j]=nums[j+1]
                    nums[j+1]=target
                }
            }
        }
        return nums;
    };
    

      

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/sort-an-array
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    vim复制
    嵌入式Linux学习(二)
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1025 数的划分
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
  • 原文地址:https://www.cnblogs.com/GoTing/p/15129720.html
Copyright © 2011-2022 走看看