为了账号安全,请及时绑定邮箱和手机立即绑定

一个js面试题

一个js面试题

慕桂英546537 2018-07-31 13:57:36
事情是这样的,作为一个应届生小菜,前些天去人人网面试了面试官给出了一个题:js实现:一个数组,把奇数放到右边,偶数放到左边,不许使用额外空间。于是我开始思考,其实如果能使用额外空间的话,额外申请一个数组,根本不是问题。也想过类似于排序的交换方法,可是交换也需要额外的临时变量tmp不是咩?而且js好像也没有类似于C语言swap的方法啊于是我这样:但是面试官边玩手机边用余光瞥了一眼,继续玩手机,然后又瞥了一眼,终于开口说:你知道从数组中间删除一个元素,splice的运行代价有多大吗?所以该怎么做呢?
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

Array.prototype.swap = function(a, b) {

    this[a] ^= this[b];

    this[b] ^= this[a];

    this[a] ^= this[b];

}

Array.prototype.OddSort = function() {

    for (var i = this.length - 1; i > 0; --i) {

        for (var j = 0; j < i; ++j)

            if (this[j] & 1)

                this.swap(j, j + 1);

    }

}

var arr = [2, 4, 77, 788, 2, 0, 99, 10];

arr.OddSort();

console.log(arr)


查看完整回答
反对 回复 2018-08-04
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

一句话arr.sort(function(a,b){return a%2!==0})

查看完整回答
反对 回复 2018-08-04
  • 3 回答
  • 0 关注
  • 1073 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信