链接列表冒泡排序不太正确

时间:2013-05-05 07:19:24

标签: c++ linked-list bubble-sort singly-linked-list

我正在研究链表的bubblesort算法。它正在移动数据,但它并没有对数据进行适当的排序。现在我只担心整合的链表。问题在哪里?非常感谢。

void List::linkedListBubbleSort()
{
    bool swap = true;
    Node * temp = firstNode;
    Node * current;

     if(firstNode == 0)
     {
          cout << "List is empty." << endl;
          return;
     }

     else
     {
         while(swap == true)
         {
             for(current = firstNode; current != NULL && current->next != NULL; current = current->next)
             {
                 if(current->data > current->next->data)
                 {
                     swap = true;
                     temp->data = current->data;
                     current->data = current->next->data;
                     current->next->data = temp->data;
                 }
             else
             swap = false;
             }

         }

2 个答案:

答案 0 :(得分:0)

你不必使用while(swap == true),因为在某些时候if(current-&gt; data&gt; current-&gt; next-&gt; data)返回false然后你的上层循环while(swap == true) )不会让你进一步迭代。

    else
    {
         for(current = firstNode; current != NULL && current->next != NULL; current = current->next)
         {
             if(current->data > current->next->data)
             {
                 temp->data = current->data;
                 current->data = current->next->data;
                 current->next->data = temp->data;
             }

         }

     }

答案 1 :(得分:0)

  1. 使用指向第一个节点的temp。因此,在交换时会破坏数据。 2.你在第一次交换时停止,只有当你完成传递整个列表并且没有进行交换时才需要停止。
  2. 算法不正确。它应该是两个循环...搜索冒泡排序。