事情是这样的,作为一个应届生小菜,前些天去人人网面试了面试官给出了一个题: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)
添加回答
举报
0/150
提交
取消