剑指offer-JZ13:调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面

http://www.nowcoder.com/questionTerminal/ef1f53ef31ca408cada5093c8780f44b

基本思路:利用冒泡的思想,碰到奇数则往前移

利用nthOdd来记录当前是第n个奇数,nthOdd初始化为-1,碰到第一个奇数,nthOdd自增为0,刚好对应数组下标。
循环一趟,若碰到奇数,则nthOdd+1,接着把该奇数前面的偶数都往后移,将该奇数放到第nthOdd位。

function reOrderArray( array ) {    
//     nthOdd用来记录当前是第几个奇数---对应数组下标
    let nthOdd = -1;
    for(let i = 0; i < array.length; i++){
        if(array[i] % 2 == 1){
            nthOdd++;
            let curOdd = array[i];
//  如果是个奇数,就把前面的偶数往后移一位,腾出来的位置即oddNth位,放入该奇数
            for(let j = i; j > nthOdd; j--){
                array[j] = array[j-1];
            }
            array[nthOdd] = curOdd;
        }
    }
    return array;
}
全部评论
还是直接遍历存奇数偶数组再合并的快,只有O(n)
点赞 回复 分享
发布于 2021-07-06 16:33

相关推荐

2025-12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
评论
9
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务