202108-26 详解C++实现链表的排序算法 目录一、链表排序二、另外一种链表排序方式三、比较两种排序的效率四、下面通过交换结点实现链表的排序一、链表排序最简单、直接的方式(直接采用冒泡或者选择排序,而且不是交换结点,只交换数据域)//线性表的排序,采用冒泡排序,直接遍历链表voidListsort(Node*&head){inti=0;intj=0;//用于变量链表Node*L=head;//作为一个临时量Node*p;Node*p1;//如果链表为空直接返回if... 继续阅读 >
202105-19 C++归并法+快速排序实现链表排序的方法 本文主要介绍了C++归并法+快速排序实现链表排序的方法,分享给大家,具体如下:我们可以试用归并排序解决:对链表归并排序的过程如下。找到链表的中点,以中点为分界,将链表拆分成两个子链表。寻找链表的中点可以使用快慢指针的做法,快指针每次移动2步,慢指针每次移动1步,当快指针到达链表末尾时,慢指针指向的链表节点即为链表的中点。对两个子链表分别排序。将两个排序后的子链表合并,得到完整的排序后的链表上述过程可... 继续阅读 >
202010-10 Java 利用递归实现链表的归并排序 利用归并排序,我们可以将时间复杂度降至O(nlogn),并且我们是对链表进行排序,可以通过修改引用来更改节点顺序,无需像数组一样开辟而外的空间。利用递归实现链表的归并排序有两个环节:分割cut环节:我们可以利用fast,slow快慢双指针实现链表的分割,fast一次移动两位,slow一次移动一位,当fast移动到末尾时,slow移动到中间位置。利用变量为tmp=slow.next记录后链表的头节点,并将slow.next=null将前后链表断开。ListNod... 继续阅读 >