📜  门| GATE-CS-2016(套装1)|问题 28(1)

📅  最后修改于: 2023-12-03 14:58:31.279000             🧑  作者: Mango

问题 28

本问题要求您实现一个函数,该函数用于接收一个数组A元素以升序排列,并根据以下规则在不更改原始数组A的情况下返回一个新的已排序数组B。

规则是:如果A中的一个元素x是偶数,则x在B中的顺序应该与它在A中的顺序相同。 如果A中的一个元素y是奇数,则y在B中的顺序也应该与它在A中的顺序相同。

例如,令A为{1,2,4,5,8,9},则函数应返回{1,2,4,5,8,9}。

函数签名
def sort_array(arr: List[int]) -> List[int]:

函数接受一个整数列表arr作为参数,并返回一个经过排序的整数列表。

实现思路

首先需要创建两个列表,一个用于存储偶数,一个用于存储奇数。

对于原始数组中的每个元素,检查其奇偶性并将其添加到相应的列表中。

对于新数组B,将两个列表中的所有元素按原始数组中的顺序连接起来。

代码实现
from typing import List

def sort_array(arr: List[int]) -> List[int]:
    even_list = []
    odd_list = []
    for num in arr:
        if num % 2 == 0:
            even_list.append(num)
        else:
            odd_list.append(num)
    return odd_list + even_list

以上是本题的实现代码。