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