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

这篇博客探讨了如何调整整数数组中数字的顺序,使奇数位于前半部分,偶数位于后半部分,同时保持相对位置不变。两种算法被提出:一种是通过冒泡排序思想,从右向左遍历并交换奇偶;另一种是从头开始遍历,将偶数移到数组尾部。这两种方法都保证了原数组中奇偶数的相对顺序不改变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

虽然讨论组说可以用到冒泡排序的思想,从右边开始遍历,如果遍历到一个奇数,就把这个奇数记下来放到第一个偶数的前面,然后依次类推,所以偶数的顺序不会变,只会慢慢后退,插入的奇数因为是从右边开始遍历的,所以找到的第二个奇数应该插入到第一个奇数的左边。

相当于冒泡排序每一次确定一个数的位置。

还有就是直接找相邻的奇偶数,然后交换位置,但是会超时。

class Solution:
    def reOrderArray(self , array ):
        # write code here
        if not array:
            return []
        for passnum in range(len(array)-1, 0, -1):
            for i in range(passnum):
                if array[i] % 2 == 0 and array[i+1] % 2 != 0:
                    array[i], array[i+1] = array[i+1], array[i]
        return array

还有就是从头开始遍历数组,找到一个偶数就把它移到数组的最后面。

class Solution:
    def reOrderArray(self , array ):
        # write code here
        l = len(array)
        low = 0
        while low <=l-1:
            if array[low] %2 ==0:
                temp = array.pop(low)
                array.append(temp)
                l -=1
            else:
                low +=1
        return array

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值