python解决数组奇数和偶数位置排序问题

题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
题目解析:这个题目很简单,只需要判断数组中的元素是奇数还是偶数,然后取出来,放进一个新的数组中就可以了。
下面介绍几种方法:
第一种使用两个数组,一个奇数数组,一个偶数数组,最后返回两个加在一起。

#第一种方法
class Solution:
    def reOrderArray(self, array):
        #分别定义两个奇数数组和偶数数组
        odd_array = []
        even_array = []
        #循环判断原数组中的元素是奇数还是偶数,然后分别添加到对应的数组中国
        for i in array:
            if i % 2 != 0:
                odd_array.append(i)
            else:
                even_array.append(i)
        return odd_array + even_array#注意这里的顺序不要搞错了,奇数在前,偶数在后
test = Solution()
test.reOrderArray([1,2,3,4,5])
[1, 3, 5, 2, 4]

当然也可以用一个数组来解决问题

array = list(map(int,input().split(' ')))
res = []
for i in array:
    if i % 2==0:
        res.append(i)
for i in array:
    if i % 2 == 1:
        res.append(i)
print(" ".join(map(str,res)))
1 3 4 5
4 1 3 5

题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,且保证奇数和偶数是按照大小顺序排列的
第二种方法,使用冒泡排序的方式

array = list(map(int, input().split(' ')))#输入整数数组
odd_array = []#奇数数组
even_array = []#偶数数组
#奇偶分开
for i in array:
    if i % 2 == 1:
        odd_array.append(i)
    else:
        even_array.append(i)
#奇数数组排序
for i in range(len(odd_array)-1):
    for j in range(len(odd_array)-1-i):
        if odd_array[j] > odd_array[j+1]:
            odd_array[j], odd_array[j+1] = odd_array[j+1], odd_array[j]
#偶数数组排序
for i in range(len(even_array)-1):
    for j in range(len(even_array)-i-1):
        if even_array[j] > even_array[j+1]:
            even_array[j], even_array[j+1] = even_array[j+1], even_array[j]
#打印排序过后的数组
print(" ".join(map(str,odd_array+even_array)))
1 4 5 77 67 2
1 5 67 77 2 4

你学会了吗,一个需要排序,一个不需要!

你可能感兴趣的:(剑指offer,python,数据结构,算法)