奇偶排序

每日一练社区 2022-06-17 14:33:51

一个数组里有奇数有偶数(乱序),调整数组顺序使奇数位于偶数前面。(测试用例仅做参考,我们会根据代码质量进行评分)

输入描述:

第一行输入整数n。
第二行输入n个整数。

输出描述:

输出排序后的n个整数。

输入样例:

4
2 3 1 23

输出样例:

3 1 23 2

返回练习题答题页面

...全文
6626 134 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
134 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

khhohoh

  • 打赏
  • 举报
回复

n=int(input())
data = list(map(int,input().split()))
i=0
while i< n:
    if data[i]%2==0:
        data.append(data.pop(i))
    i+=1
print(str(data).strip('[').strip(']').replace(',',' '))


小宝潜行 2024-01-09
  • 打赏
  • 举报
回复
public class Day01 {
    public static void main(String[] args) {
        System.out.println("请输入个数...");
        Scanner sc = new Scanner(System.in);
        // 获取到输入的数组的个数
        int inputNum = sc.nextInt();
        // 偶数
        List<Integer> evenList = new ArrayList<>();
        // 奇数
        List<Integer> oddList = new ArrayList<>();
        for (int i = 0; i < inputNum; i++) {
            System.out.println("添加第" + (i + 1) + "个数: ");
            sc = new Scanner(System.in);
            int inputNumVal = sc.nextInt();
            if (inputNumVal % 2 == 0) {
                // 偶数
                evenList.add(inputNumVal);
            } else {
                // 奇数
                oddList.add(inputNumVal);
            }
        }
        // 数组合并输出
        List<Integer> mergeList = Stream.of(oddList, evenList).flatMap(Collection::stream).collect(Collectors.toList());
        System.out.println(mergeList);
    }
}
CSDN-Ada助手 2024-01-09
  • 举报
回复
@小宝潜行 你的代码已经解决了奇偶排序的问题,可以将奇数和偶数分别存储在两个列表中,然后使用流的方式将两个列表合并成一个列表,并输出结果。不过,你可以将代码进行优化,避免多次创建Scanner对象。建议将Scanner对象的创建移到循环外部。另外,你可以考虑使用泛型来指定列表中的元素类型,提高代码的可读性和安全性。如果有其他问题或需要进一步帮助,请随时告诉我。
沐沐森的故事 2024-01-06
  • 打赏
  • 举报
回复
list_nums = list(map(int,input().split()))
def fun(list_nums):
    odd_numbers= []
    even_numbers= []
    for i in list_nums:
        if i%2 != 0:
            odd_numbers.append(i)
        else:
            even_numbers.append(i)
    list_order = odd_numbers+even_numbers
    list_order = " ".join(map(str,list_order ))
    return(list_order)
 
new_num = fun(list_nums )
print(new_num)

CSDN-Ada助手 2024-01-06
  • 举报
回复
@沐沐森的故事 你的代码看起来是正确的,实现了将奇数排在偶数前面的功能。你使用了两个列表来分别存储奇数和偶数,然后将它们合并起来。最后,你将合并后的结果转换为字符串,并打印出来。如果你有任何问题或者需要进一步的帮助,请随时告诉我。
某278 2023-11-03
  • 打赏
  • 举报
回复
package org;
import java.util.LinkedList;
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        while (true) {
            LinkedList numList = new LinkedList<>();
            System.out.println("请输入一个数!!!");
            Scanner scanner = new Scanner(System.in);
            String n = scanner.nextLine();
            if (n.matches("[1-9]\\d*")) {
                System.out.println("请输入" + n + "个数,每两个数之间以一个空格隔开!!!");
                Scanner scanner1 = new Scanner(System.in);
                String s = scanner1.nextLine();
                if (s.matches("\\d+(\\s+\\d+)*")) {
                    String[] sArr = s.split(" ");
                    for (int i = 0; i < sArr.length; i++) {
                        int a = Integer.parseInt(sArr[i]);
                        if (a % 2 != 0) {
                            numList.addFirst(a);
                        } else {
                            numList.add(a);
                        }
                    }
                    numList.forEach(System.out::println);
                } else {
                    System.out.println("输入错误请重试!!!");
                }
            } else {
                System.out.println("输入错误请重试!!!");
            }
        }
    }
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@某278 您好,感谢您分享了这段Java代码。这段代码是一个奇偶排序的程序,通过输入一组数,将奇数排在偶数前面并输出。您是否还有其他问题或者想要讨论的话题呢?我可以帮助您解答相关问题。
Margaret_加油 2023-11-03
  • 打赏
  • 举报
回复

nums = list(map(int,input().split()))
def fun(nums):
    n1 = []
    n2 = []
    for i in nums:
        if i%2 != 0:
            n1.append(i)
        else:
            n2.append(i)
    n = n1+n2   
    n = " ".join(map(str,n))
    return(n)

new_num = fun(nums)
print(new_num)
CSDN-Ada助手 2023-12-26
  • 举报
回复
@Margaret_加油 您好,根据您的输入,我已经帮您调整了数组顺序使奇数位于偶数前面。结果如下: 3 1 23 42
自由·极光 2023-11-03
  • 打赏
  • 举报
回复

public static void main(String[] args) {
        System.out.println("请输入两行整数");
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        List<Integer> oddList = new ArrayList<>();
        List<Integer> evenList = new ArrayList<>();

        for (int i = 0; i < n; i++) {
            int num = scanner.nextInt();
            if (num % 2 == 0) {
                evenList.add(num);
            } else {
                oddList.add(num);
            }
        }

        // 合并奇数和偶数列表
        oddList.addAll(evenList);

        // 输出排序后的结果
        for (int num : oddList) {
            System.out.print(num + " ");
        }
    }
CSDN-Ada助手 2023-12-26
  • 举报
回复
@自由·极光 你的代码已经解决了奇偶排序的问题,将奇数和偶数分别存储在两个列表中,然后合并并输出排序后的结果。如果你需要进一步优化代码,可以考虑使用泛型来声明List类型,以及添加异常处理和边界情况的处理。希望对你有帮助!
Overdoess 2023-11-02
  • 打赏
  • 举报
回复
list0 = []
x = input("输入数字(以空格分开):")
list0 = list(map(int, x.split()))
list1 = []
list2 = []
for i in list0:
    if i % 2 == 0:
        list1.append(i)
        list1.sort()
    else:
        list2.append(i)
        list2.sort()
print(list2 + list1)
CSDN-Ada助手 2023-12-26
  • 举报
回复
@Overdoess 你的代码已经实现了将输入的数字按照奇偶数进行排序的功能,不过可以优化一下代码逻辑。你可以将两个列表分别存储奇数和偶数,然后再合并排序输出。这样更清晰易懂一些。希望对你有帮助!
_ABCD 2023-11-01
  • 打赏
  • 举报
回复
public static void main(String[] args) throws IOException {
    while (true) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个数字,作为下一次输入数字的数量:");
        Integer next = sc.nextInt();
        String s2 = sc.nextLine();
        System.out.print("输入数字为:" + next + ",请进行第二次输入,输入" + next + "个数字,以空格隔开:");
        String s = sc.nextLine();
        System.out.println("输入数字数组为:" + s);
        ArrayList list = new ArrayList<>();
        ArrayList list2 = new ArrayList<>();
        String[] s1 = s.trim().split(" ");
        try {
            if (next != s1.length) {
                System.out.println("第二次输入的数量和第一次输入的数量定义不一致,请重新输入");
                continue;
            }
        } catch (Exception e) {
            System.out.println("输入错误,请重新输入");
            continue;
        }
        try {
            for (String i : s1) {
                if (Integer.parseInt(i) % 2 == 0) {
                    list2.add(i);
                } else {
                    list.add(i);
                }
            }
        } catch (Exception e) {
            System.out.println("输入错误,请重新输入");
            continue;
        }
        list.addAll(list2);
        System.out.println(list.toString());
        return;
    }
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@_ABCD 您的代码逻辑基本正确,但有一些小问题需要注意。首先,在使用Scanner获取输入时,可能会出现换行符未被消费的情况,导致第二次输入时出现问题。您可以尝试在获取next后加上一个sc.nextLine()来消费换行符。另外,建议在使用ArrayList时指定泛型类型,比如ArrayList<String> list = new ArrayList<>();这样可以避免在添加元素时进行类型转换。希望对您有所帮助!
三月下江南 2023-10-09
  • 打赏
  • 举报
回复

用两个数组,一个odd数组存奇数,一个even数组存偶数。每存一个奇数i++,每存一个偶数j++.num数组先遍历奇数组,再遍历偶数组。

CSDN-Ada助手 2023-12-26
  • 举报
回复
@三月下江南 这是一个很好的解决方法,可以有效地将奇偶数分开存储,然后再按照奇偶顺序重新组合数组。这样可以很好地实现奇偶排序的需求。感谢你的分享!
闹钟145 2023-10-08
  • 打赏
  • 举报
回复
# #奇数偶数分开排序
# num = input("输入数字,空格分开:")
# lst = num.split()
# lst = list(map(int, lst))
# list1 = []
# list2 = []
# for i in lst:
#     if i % 2 == 0:
#         list1.append(i)
#         sort_list1 = sorted(list1)
#     else:
#         list2.append(i)
#         sort_list2 = sorted(list2)
# sort_list1.extend(sort_list2)
# print(sort_list1)

CSDN-Ada助手 2023-12-26
  • 举报
回复
@闹钟145 您的代码已经很接近正确答案了,但是在合并奇数和偶数列表时,需要注意顺序。您可以尝试使用两个指针分别指向奇数和偶数的位置,然后交替将奇数和偶数添加到新的列表中。这样可以保证奇数在前偶数在后,并且不需要额外的排序步骤。希望对您有所帮助!
958hhh 2023-10-06
  • 打赏
  • 举报
回复
num=int(input())
lst=input().split()
lst=list(map(int,lst))
lst2=[]
lst1=[]
for item in lst:
    if item%2 !=0:
        lst1.append(item)
    else:
        lst2.append(item)
lst1.extend(lst2)
for item in lst1:
    print(item,end=' ')


CSDN-Ada助手 2023-12-26
  • 举报
回复
@958hhh 您好,您的代码看起来已经实现了将奇数放在偶数前面的功能,很棒!感谢您分享您的解决方案。如果您对其他方面有疑问或需要帮助,请随时告诉我。
飞乐鸟 2023-09-27
  • 打赏
  • 举报
回复

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
// 遍历数组,把奇数放在前面,偶数放在后面
int i = 0;
int j = n - 1;
while (i < j) {
if (nums[i] % 2 == 1) {
i++;
continue;
}
if (nums[j] % 2 == 0) {
j--;
continue;
}
// 交换奇偶位置
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}

    // 输出结果
    System.out.println(Arrays.toString(nums));
}
CSDN-Ada助手 2023-12-26
  • 举报
回复
@飞乐鸟 你的代码看起来很不错,能够有效地将奇数放在偶数前面。这样就可以满足题目要求了。如果你还有其他问题或者需要进一步的帮助,请随时告诉我。
ipmt 2023-09-19
  • 打赏
  • 举报
回复
import random

# 创建一个原始的随机数列
# 一个数组里有奇数有偶数(乱序),调整数组顺序使奇数位于偶数前面
my_list = random.sample(range(1, 100), 20)
print(my_list)
random.shuffle(my_list)
print(my_list)
#
odd_list = []
even_list = []
for i in my_list:
    # print(i)
    remainder = i % 2
    if remainder == 0:
        even_list.append(i)
    else:
        odd_list.append(i)

print(odd_list)
print(even_list)
odd_list.extend(even_list)
print(odd_list)

CSDN-Ada助手 2023-12-26
  • 举报
回复
@ipmt 您的代码已经成功实现了将数组中的奇数放在偶数前面的功能,很棒!不过,您可以尝试使用更简洁的方法来实现这个功能,比如不需要额外创建两个空数组来存放奇数和偶数,直接在原数组上进行操作即可。祝您编程愉快!
ipmt 2023-09-19
  • 打赏
  • 举报
回复
import random

# 创建一个原始的随机数列
my_list = random.sample(range(1, 100), 20)
print(my_list)

# 调整数组顺序使奇数位于偶数前面
random.shuffle(my_list)
print(my_list)

# 初始化奇数和偶数列表
odd_list = []
even_list = []

# 将奇数和偶数分别添加到对应的列表中
for i in my_list:
    remainder = i % 2
    if remainder == 0:
        even_list.append(i)
    else:
        odd_list.append(i)

# 将偶数列表拼接到奇数列表后面
odd_list.extend(even_list)
print(odd_list)

```

CSDN-Ada助手 2023-12-26
  • 举报
回复
@ipmt 你的代码看起来很不错!你成功地将奇数和偶数分别添加到对应的列表中,并且成功地将偶数列表拼接到奇数列表后面。这样就实现了将奇数位于偶数前面的要求。非常棒!
jk_101 2023-09-19
  • 打赏
  • 举报
回复 1


```python
# 读取输入
n = int(input())
numbers = list(map(int, input().split()))

# 分离奇数和偶数
odd_numbers = []
even_numbers = []

for num in numbers:
    if num % 2 == 0:
        even_numbers.append(num)
    else:
        odd_numbers.append(num)

# 合并奇数和偶数,并保持奇数在前,偶数在后的顺序
result = odd_numbers + even_numbers

# 输出结果
print(' '.join(map(str, result)))


```

CSDN-Ada助手 2023-12-26
  • 举报
回复
@jk_101 您的代码逻辑是正确的,首先分离出奇数和偶数,然后合并保持奇数在前、偶数在后的顺序。很好的解决了这个问题。祝您编程顺利!
  • 打赏
  • 举报
回复
    let arr1=[];
    let arr2=[];
    let arr3=[1,2,6,3,8,4,9,5,7];
    
    for (var i = 0; i < arr3.length; i++) {
        if(arr3[i]%2==0){
            arr2.push(arr3[i]);
        }else{
            arr1.push(arr3[i]);
        }
    }
    
    // console.log(arr1.sort(sortnum));
    // console.log(arr2.sort(sortnum));
    
    
    let arr4=arr1.concat(arr2);
    console.log(arr4);
    
    
    function sortnum(a,b){
        return a-b;
    }
CSDN-Ada助手 2023-12-26
  • 举报
回复
@她再无杜朗护盾 你的代码实现了将奇数和偶数分别存储在两个数组中,然后合并成一个新的数组。但是你可以尝试使用一个循环,将奇数放在偶数前面,而不需要额外的数组。另外,你可以直接在合并后的数组上使用sort方法进行排序,而不需要单独对奇数数组和偶数数组进行排序。希望对你有帮助!
PPPPickup 2023-09-10
  • 打赏
  • 举报
回复 1

int main()
{
    int num = 0;
    int arr[10] = { 0 };
    int i = 0;
    scanf("%d", &num);
    printf("\n");
    for (i = 0; i < num; i++)
    {
        scanf("%d", &arr[i]);
    }
    int m = 0;
    int n = 1;
    for (m = 0, n = 1; m < num && n < num; m++, n++)
    {
        if (arr[m] % 2 == 0 && arr[n] % 2 == 1)
        {
            int tem = 0;
            tem = arr[m];
            arr[m] = arr[n];
            arr[n] = tem;
        }
    }
    for (i = 0; i < num; i++)
    {
        printf("%d", arr[i]);
    }
    return 0;
}
yu_man_ 2023-10-31
  • 举报
回复
@PPPPickup 这个不能
CSDN-Ada助手 2023-12-26
  • 举报
回复
@PPPPickup 你好,你的代码已经能够实现将数组中的奇数放在偶数前面的功能,但是还存在一些问题。在交换奇偶数的时候,你只进行了一次循环交换,这可能导致并没有将所有的奇数放在偶数前面。你可以尝试使用双指针的方法来解决这个问题。另外,你在打印数组元素的时候需要添加空格或换行符来使输出更清晰。希望对你有所帮助。
Haley01 2023-09-09
  • 打赏
  • 举报
回复
n = input('输入整数n ')
m = input(f'输入{n}个整数 ')
lst = m.split(' ')
for i in lst:
    if int(i) % 2 == 1:
        lst.remove(i)
        lst.insert(0, str(i))
print(' '.join(lst))
CSDN-Ada助手 2023-12-26
  • 举报
回复
@Haley01 你的方法尝试在循环过程中修改列表,这可能导致意外的结果。建议你使用不会改变列表结构的方法来重新排列奇偶数的顺序。例如可以创建两个新的列表,一个存放奇数,一个存放偶数,然后再合并它们。
愚公爱上精卫 2023-06-29
  • 打赏
  • 举报
回复

 const list = [1,2,3,4,5,6,7,8,9,10];
    let one = []//存放单数
    let two = []//存放双数
    for (let index = 0; index < list.length; index++) {
        list[index]%2==0 ? one.push(list[index]) : two.push(list[index])
    }
    let x = two.concat(one)
    console.log(x);//[1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
CSDN-Ada助手 2023-06-29
  • 举报
回复
@愚公爱上精卫 你的代码逻辑是正确的,通过遍历数组,将奇数和偶数分别放入不同的数组中,然后再将两个数组合并起来,就可以实现奇数在前偶数在后的排序。你的代码输出结果也是正确的。如果还有其他问题,请随时提问。
加载更多回复(43)

11,805

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧