Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 单链表上的合并排序C++;_C++_Mergesort_Singly Linked List - Fatal编程技术网

C++ 单链表上的合并排序C++;

C++ 单链表上的合并排序C++;,c++,mergesort,singly-linked-list,C++,Mergesort,Singly Linked List,我正在寻找一些简单的方法,我可以学习和理解这些合并排序。我在网上查过,发现合并排序对单链表很有用,但我不知道怎么做。这是我找到的网站: 和 我不知道该给你什么代码。我基本上只是在我的头文件中有这个,我是新来的,所以我是非常基本的。提前感谢您的帮助:) 如果你看看维基百科上的这段话 从概念上讲,合并排序的作用是 跟随 如果列表的长度为0或1,则该列表已排序。否则: 将未排序的列表分成两个子列表,大小约为一半 通过重新应用合并排序对每个子列表进行递归排序 将两个子列表合并回一个排序列表 这非常简洁

我正在寻找一些简单的方法,我可以学习和理解这些合并排序。我在网上查过,发现合并排序对单链表很有用,但我不知道怎么做。这是我找到的网站: 和

我不知道该给你什么代码。我基本上只是在我的头文件中有这个,我是新来的,所以我是非常基本的。提前感谢您的帮助:)


如果你看看维基百科上的这段话

从概念上讲,合并排序的作用是 跟随

  • 如果列表的长度为0或1,则该列表已排序。否则:
  • 将未排序的列表分成两个子列表,大小约为一半
  • 通过重新应用合并排序对每个子列表进行递归排序
  • 将两个子列表合并回一个排序列表
  • 这非常简洁地告诉您需要做什么以及需要什么样的操作。句子2和4是您需要能够执行的操作
    Split()
    Merge()
    。拆分可以在
    节点上实现

    // Split: removes half of the list and returns a pointer to it
    Node* Node::Split()
    {
    } 
    
    类似地,合并可以实现为

    // Merge: insert elements from source in order
    Node::Merge(Node* source)
    {
    }
    
    作为一个整体,1,2,3,4描述了执行实际排序所需的操作。通过使用列表操作合并和拆分,在排序函数中按顺序执行这些步骤

    这只是一种方式:代码>合并< /COD>和 SPLIG/<代码>,你如何实现它们将取决于你的风格、需求、C++知识和其他各种因素。(我相信你会在答案中看到其他一些解决方案)。您可能还需要一个

    Node::Append(Node*val)
    或类似的基本运算符。看起来您不需要
    Node::Remove(Node*val)
    ,但实现这一点可能不会有什么坏处

    // Merge: insert elements from source in order
    Node::Merge(Node* source)
    {
    }