C ++在队列上插入排序

时间:2015-12-16 17:35:09

标签: c++ sorting queue implementation insertion

我试图在不使用数组的情况下在两个队列上实现“插入排序”。

  

队列1 - 4,5,11,8,3

     

队列2 - 2,3,4,5,2,1

排序后如下:

  

队列1 - 3,4,5,8,11

     

队列2 - 2,2,3,4,5,1

他们被排序。但我把队列排序就好像它是一个列表。我不知道如何处理FIFO结构。

我的老师说如果是列表,我的实现是好的,但不是队列。我应该使用push()pop()函数(已经实现它们)和第三个队列来获取帮助。这是我目前对排序算法的实现:

void InsertionSort(queue* &left, queue* &right)
{
    int x, i = 0, j;
    queue *p = left;
    while (p)
    {
        x = getElemAt(i, left, right);
        j = i - 1;
        while (j >= 0 && x < getElemAt(j, left, right))
        {
            setElemAt(j + 1, getElemAt(j, left, right), left, right);
            j--;
        }
        setElemAt(j + 1, x, left, right);
        p = p->next;
        i++;
   }
}

getElemAtsetElemAt是我单独编写的附加功能。我该如何解决使用额外队列排序的问题?

1 个答案:

答案 0 :(得分:0)

@interjay队列需要单独排序,使用第3个辅助队列,队列在队列1或队列2时使用。队列不能同时排序,因为这将需要2个辅助队列