gpt4 book ai didi

c# - 奇数/偶数 - 排序数组

转载 作者:行者123 更新时间:2023-11-30 16:51:15 27 4
gpt4 key购买 nike

谁能帮忙。我必须编写一个程序,让用户输入 10 个数字。并将这些数字按奇数(升序)和偶数(降序)排序。

例如:输入:2、8、7、13、23、9、34、11、1、16输出:1、7、9、11、13、23、34、16、8、2

而且我必须在没有任何方法的情况下执行此操作,例如 Array.Sort。

到目前为止,这是我的代码:

Console.WriteLine("Input 10 numbers: ");
int[] number = new int[10];
for (int i = 0; i < number.Length; i++) {
number[i] = int.Parse(Console.ReadLine());

if (number[i] == 0) {
Console.WriteLine("input of 0 is not alllowed!");
break;
}
}

//EVEN NUMBERS
for (int i = 0; i < number.Length; i++) {
if (number[i] % 2 == 0) {
Console.Write("{0} ", number[i]);
}
}

//ODD NUMBERS
for (int i = 0; i < number.Length; i++) {
if (number[i] % 2 != 0) {
Console.Write("{0} ", number[i]);
}
}

我只需要大致了解如何去做。

最佳答案

您可以实现多种良好的排序算法,我不会深入讨论,因为这与您的问题有些偏离主题,但是 here's a link到描述其中许多内容的页面。

使用任何排序算法解决问题的关键是拥有一个良好的比较函数,它可以告诉您值应该以什么顺序显示。在您的案例中进行比较的重要规则是:1.奇应该总是先于偶2. 低奇数应该在高奇数之前3. 高偶数应该在低偶数之前

因此,您的比较函数可能如下所示(注意:我通常不会以这种方式命名函数或参数,但对于这个示例来说,它使它更清晰一些)

public bool AComesBeforeB(int a, int b) 
{
if(IsOdd(a))
{
if(IsOdd(b))
{
return a < b;
}
else
{
return true;
}
}
else
{
if(isOdd(b))
{
return false;
}
else
{
return a > b;
}
}
}

或者,您可以按照 yyttr3 的建议进行操作,将偶数和奇数分成不同的数组,然后从那里对它们进行排序。我不想那样做,因为它需要更多的代码和更多的内存,但它基本上也能正常工作。

一些与您的问题没有直接关系的注释:

  1. 研究如果有人输入 0 会发生什么(提示,它不能正确运行)

  2. 根据您的代码和示例输入,您假设输入始终是一系列整数,如果用户输入带小数的数字会怎样?还是按字母顺序排列的字符串? (提示:异常会使您的程序崩溃)

  3. 确保您的程序处理负数,就目前而言,我不明白为什么不能处理,但这在处理数字输入时始终是一个很好的测试

  4. 这看起来像是一项家庭作业,虽然可以就问题的特定部分寻求建议和帮助,但不要尝试使用 SO 来为您做家庭作业,明确地说,我不不认为你在这样做,但 Rariolu 的回答基本上是给你批发代码,如果将其作为你自己的作品提交,可能会被视为抄袭

  5. 当您说您想“不使用任何方法”执行此操作时,这表明您误解了方法是什么。此代码本质上将在一个方法内运行,为了以清晰易懂的方式编写此代码,您将希望编写您自己的方法,您可以从 main 方法调用这些方法。我认为您真正想说的是“我必须处理而不使用通常用于排序的 C# 库方法”。

关于c# - 奇数/偶数 - 排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34053411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com