C# 对队列中的数字进行排序

C# 对队列中的数字进行排序,c#,queue,C#,Queue,所以我有一个关于排队的问题。 我需要构建一个函数,它接受一个队列并返回从最小值到最大值排序的队列。 我编写了一个函数,在不更改队列本身的情况下查找队列中的最小数字(选中此项,它可以工作) 然后我写道: static Queue<int> Order(Queue<int> q) { int x; Queue<int> help = new Queue<int>(); while (!q.IsEmpty()) {

所以我有一个关于排队的问题。 我需要构建一个函数,它接受一个队列并返回从最小值到最大值排序的队列。 我编写了一个函数,在不更改队列本身的情况下查找队列中的最小数字(选中此项,它可以工作) 然后我写道:

 static Queue<int> Order(Queue<int> q)
{
    int x;
    Queue<int> help = new Queue<int>();
    while (!q.IsEmpty())
    {
        if (q.Head() == Small(q))
            help.Insert(q.Remove());
        else
        {
            x = q.Remove();
            q.Insert(x);
        }
       Order(q);
    }
    while (!help.IsEmpty())
        q.Insert(help.Remove());
    return (q);
静态队列顺序(队列q)
{
int x;
队列帮助=新建队列();
而(!q.IsEmpty())
{
如果(q.Head()==小(q))
help.Insert(q.Remove());
其他的
{
x=q.Remove();
q、 插入(x);
}
顺序(q);
}
而(!help.IsEmpty())
q、 插入(help.Remove());
回报率(q);
}

我真的看不出我在哪里乱搞,因为它不起作用。。 有什么建议吗? ps:我在c#2010上工作,很抱歉英语不好

试试这个编辑过的版本:(注意,您的代码也是排序输入参数'q')

静态队列顺序(队列q)
{
int x;
队列帮助=新建队列();
而(q.Count>0)
{
如果(q.Peek()==q.Min())
help.Enqueue(q.Dequeue());
其他的
{
x=q.Dequeue();
q、 排队(x);
}
顺序(q);
}
而(help.Count>0)
q、 排队(help.Dequeue());
回报率(q);
}
但您也可以按如下方式使用LINQ来获得排序队列:

static Queue<int> Order(Queue<int> q)
{
    Queue<int> q2 = new Queue<int>();
    foreach (int i in q.OrderBy(x => x))
        q2.Enqueue(i);
    return q2;
}
静态队列顺序(队列q)
{
队列q2=新队列();
foreach(q.OrderBy中的int i(x=>x))
q2.排队(一);
返回q2;
}

我会选择LINQ路线。我看不出实施动态排序有什么好处。只有当数据被流下来才有意义。好吧,谢谢alot的回复,我想我理解了你在那里做的事情,尽管我没有学习你使用的那些函数(我不确定我是否会稍后学习它们,因为我只是开始这个…)。我真的想到了另一种方法来做这件事,我只是很好奇为什么这个方法不起作用。但是,再次谢谢你。嗯。。我真的不知道这是什么版本。关于它的行为,如果我输入的数字已经排列好了,什么也不会发生,它只会打印出来,但如果没有排列好,它会显示“未处理的异常”
static Queue<int> Order(Queue<int> q)
{
    Queue<int> q2 = new Queue<int>();
    foreach (int i in q.OrderBy(x => x))
        q2.Enqueue(i);
    return q2;
}