数组的排序方法(java)

        这个章节将讲诉对数组的排序,从小到大规律排序,加深我们对数组的运算与理解

原题题目:

        给定一个数组 arr 和一个函数 fn,返回一个排序后的数组 sortedArr。你可以假设 fn 只返回数字,并且这些数字决定了 sortedArr 的排序顺序。sortedArr 必须按照 fn 的输出值 升序 排序。

你可以假设对于给定的数组,fn 不会返回重复的数字。

默认代码模板: 

/**
 * @param {Array} arr
 * @param {Function} fn
 * @return {Array}
 */
var sortBy = function(arr, fn) {
    
};

输出结果事列:

示例 1:

输入:arr = [5, 4, 1, 2, 3], fn = (x) => x
输出:[1, 2, 3, 4, 5]
解释:fn 只是返回传入的数字,因此数组按升序排序。

示例 2:

输入:arr = [{"x": 1}, {"x": 0}, {"x": -1}], fn = (d) => d.x
输出:[{"x": -1}, {"x": 0}, {"x": 1}]
解释:fn 返回 "x" 键的值,因此数组根据该值排序。

示例 3:

输入:arr = [[3, 4], [5, 2], [10, 1]], fn = (x) => x[1]
输出:[[10, 1], [5, 2], [3, 4]]
解释:数组按照索引为 1 处的数字升序排序。

根据以上要求我们可以写出:

解答:

/**
 * @param {Array} arr
 * @param {Function} fn
 * @return {Array}
 */
var sortBy = function(arr, fn) {
    return arr.sort((a,b) => fn(a) - fn(b))
};

   我们可以利用 sortBy 函数内部使用了数组的 sort 方法来进行排序。sort 方法接受一个比较函数作为参数,用于确定元素的排序顺序。在这个代码中,比较函数被定义为 (a, b) => fn(a) - fn(b)

       该比较函数通过调用给定的函数 fn 来获取每个元素的排序依据,然后使用减法运算符比较这些依据的值。通过返回正数、负数或零来确定元素的顺序。如果 fn(a) - fn(b) 的结果是负数,说明 a 应该在 b 之前;如果结果是正数,说明 a 应该在 b 之后;如果结果是零,说明 a 和 b 的顺序相同。

       这个方法利用了数组的 sort 方法和比较函数来实现自定义的排序规则。通过传递不同的函数 fn,可以根据元素的不同属性或条件来对数组进行排序。

                                                                                                    题库出自leetcode,解答仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值