2021-10-14

牛客网/剑指offer/4.调整数组顺序是奇数位于偶数前面

python算法:

1.range函数

range(start, stop[, step])

start默认从0开始,step默认为1。(只有一个参数,默认为0-n;两个参数,默认步长为1。)

循环范围:左闭右开,不包含stop, 如:range(0,5) 。循环范围为:[0,1,2,3,4]

2.for循环

for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

        for i in array:

        若array是列表,则i为列表中按序的一个个元素,若array为字符串,则i为其中的一个个字母。

for i in range(len(array)):            //通过索引遍历,则i是下标

for i in range(10,20)                   //通过 循环迭代10-20的值

3.交换两数

i,j = j,i                       //交换i和j

算法思路:

解法一:(常规解法)

1.建立一个数组用于暂存

2.遍历数组两次,第一次按序取出基数元素。

3.第二次安按序取出偶数元素

算法分析:

时间复杂度 O(n)

空间复杂度 O(n)

解法二:(不用辅助空间)

用冒泡排序,每轮比较的时候,如果前一个数为奇数,后一个数为偶数,则需要交换两数,这样经过多轮比较,全部偶数就会沉入数组后面。

算法分析:

时间复杂度 O(n^2)

空间复杂度 O(1)

用时间换空间

算法代码:

1.辅助数组

class Solution:
    def reOrderArray(self , array ):
        # write code here
        ret = []
        for i in array:
            if i % 2 == 1:
                ret.append(i)
        for i in array:
            if i % 2 == 0:
                ret.append(i)
                
        return ret

2.无辅助数组

for i in range(len(array)):
            for j in range(len(array) - i - 1):
                if array[j] % 2 == 0 and array[j+1] % 2 == 1:
                    array[j], array[j + 1] = array[j + 1], array[j]
                      
        return array

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值