【发布时间】:2018-07-04 17:01:17
【问题描述】:
我只想排序奇数而不移动偶数。例如,如果我的输入是:
[5, 3, 2, 8, 1, 4]
预期结果是:
[1, 3, 2, 8, 5, 4]
我是 C# 新手,在 Internet 上遇到了一个令我困惑的挑战。我已经尝试了几个小时,我想在
中学习这个概念挑战说明:
你有一个数字数组。你的任务是对升序的奇数进行排序,但偶数必须在它们的位置上。零不是奇数,你不需要移动它。如果你有一个空数组,你需要返回它。
这是我目前的代码,请放心,我正处于编程的初级阶段。
public static int[] SortArray(int[] array)
{
var dict = new Dictionary<int, int>();
var dict2 = new Dictionary<int, int>();
for (int i = 0; i < array.Length; i++)
{
int j =0;
if (array[i] % 2 != 0)
{
dict.Add(array[i], i+1);
}
else
{
dict2.Add(array[i], i+1);
}
}
var result = dict.OrderBy(x => x.Key);
Dictionary<int, int> resultDic = result.Union(dict2)
.GroupBy(x => x.Key).ToDictionary(o => o.Key, o => o.Key);
}
public static void Main()
{
SortArray(new int[] { 5, 3, 2, 8, 1, 4});
}
【问题讨论】:
-
似乎您应该能够使用任何现有的就地排序算法 - 只需完全忽略(跳过)包含偶数值的位置。
-
欢迎来到 StackOverflow;我注意到您的问题中没有 question,只有一段代码和一个问题陈述。 您的具体问题是什么?如果您的代码有效并且您希望获得评论,请将其发布在代码审查网站上,而不是本网站上。如果您的代码不起作用,请询问有关问题的具体问题。