字节跳动2021/3/23面试

1.实现一个排序算法,完成下面序列的排序!
var version = [“1.34.5”, “1.23123.10”, “1.1.1”];也就是说,按照每个点对应的数字的大小进行排序,每个点的数字越大对应的数字的结果就是在后面。上面的排序之后的序列应该是:
[ ‘1.1.1’, ‘1.34.5’, ‘1.23123.10’ ]

实现的代码如下:使用前端的语言JavaScript实现的,重写一个sort的第三个参数函数即可!

var version = ["1.34.5", "1.23123.10", "1.1.1"];
function cmp(a, b) {
    var len_a = a.length;
    var len_b = b.length;
    var i = 0;
    var j = 0;
    for (; i < len_a, j < len_b; i++, j++) {
        var str_a = '';
        while (a[i] != '.' && i < len_a) {
            str_a += a[i];
            i++;
        }
        var num_a = Number(str_a);
        var str_b = '';
        while (b[j] != '.' && j < len_b) {
            str_b += b[j];
            j++;
        }
        var num_b = Number(str_b);
        if (num_b === num_a) {
            continue;
        } else {
            return num_b < num_a;
        }

    }
}
version.sort(cmp);
console.log(version);
[ '1.1.1', '1.34.5', '1.23123.10' ]

第二题目:给你一个任意的数组叫你完成其中的元素的随机排序,当时我想的是生成一个随机,每次判断当前的随机数字是否大于0.5的方式来完成随机排序。
代码如下:

var s = ['a', 'f', 'g', 'k'];
var cmp1 = function () {
    var number = Math.random();
    return number > 0.5;
}
s.sort(cmp1);
console.log(s);

/*
PS E:\leetcode> node .\code.js
[ '1.1.1', '1.34.5', '1.23123.10' ]
PS E:\leetcode> node .\code.js
[ '1.1.1', '1.34.5', '1.23123.10' ]
[ 'k', 'f', 'a', 'g' ]
PS E:\leetcode> node .\code.js
[ '1.1.1', '1.34.5', '1.23123.10' ]
[ 'a', 'f', 'k', 'g' ]
PS E:\leetcode> node .\code.js
[ '1.1.1', '1.34.5', '1.23123.10' ]
[ 'f', 'k', 'g', 'a' ]
PS E:\leetcode> 
*/

从上面的代码可以看出每次的输出的结果确实不一样的,证明两个算法的思路和实现全部正确!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值