1、对于链表来说,由于其元素的访问只能是顺序访问,而快速排序是改进后的冒泡排序,需要随机存取数据,不合适。采用归并排序方式对链表元素进行访问;
   2、需要的步骤  
        1) 分割:将一段链表分成两部分
        2) 排序:将两端已经有序的链表合并
        3)分治递归:递归操作
 //将链表Plist分割,并把分割后的两段链表第一个元素节点通...
                            
                            
                                分类:
编程语言   时间:
2016-05-07 11:22:06   
                                阅读次数:
224
                             
                         
                    
                        
                            
                            
                                    题目:输入俩个递增排序的链表,合并这两个链表,使合并后的链表任然是有序的。 struct ListNode{ int value; ListNode* next; }; 利用递归实现的代码如下: ...
                            
                            
                                分类:
其他好文   时间:
2016-04-26 01:58:12   
                                阅读次数:
156
                             
                         
                    
                        
                            
                            
                                //合并两个已序单链表PSListNodeMergeList(PSListNodepL1,PSListNodepL2){PSListNodepNewHead=NULL;PSListNodepL1Node=pL1;PSListNodepL2N0de=pL2;PSListNodepNode=NULL;PSListNodepTailNode=NULL;if(pL1==NULL){returnpL2;}if(pL2==NULL){returnpL1;}if(pL1Node->data>p..
                            
                            
                                分类:
其他好文   时间:
2016-04-06 11:39:25   
                                阅读次数:
185
                             
                         
                    
                        
                            
                            
                                合并单链表-->一、解决方法:确保两个单链表不为空,且二者皆有序(若无序,则先进行排序)创建新的单链表,并比较原本两个单链表数据大小,较小者置于新单链表中逐步将两个单链表的数据置于新单链表中,直至二者为空二、程序代码:ListNode*MergeList(ListNode*L1,ListNode..
                            
                            
                                分类:
其他好文   时间:
2016-03-28 22:02:07   
                                阅读次数:
242
                             
                         
                    
                        
                            
                            
                                /归并[)升序
//使用链表合并思想
voidMerge(int*src,int*dest,intbegin1,intend1,intbegin2,intend2)
{
	assert(src&&dest);
	intindex=begin1;//两个区间挨着
	while(begin1<end1&&begin2<end2)
	{
		if(src[begin1]<src[begin2])
		{
			dest[index..
                            
                            
                                分类:
编程语言   时间:
2016-03-27 15:57:15   
                                阅读次数:
196
                             
                         
                    
                        
                            
                            
                                    有序A={1,7,8} 有序B={2,4,6,8,10,11} 求A+B?
                            
                            
                                分类:
其他好文   时间:
2016-03-16 08:22:43   
                                阅读次数:
203
                             
                         
                    
                        
                            
                            
                                链表合并,启发式合并,由于是启发式合并,所以还要开一个数组记录实际是哪个颜色。
                            
                            
                                分类:
其他好文   时间:
2016-03-13 06:22:55   
                                阅读次数:
135
                             
                         
                    
                        
                            
                            
                                【题目】 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是依照递增排序的。 【分析】 合并单链表,须要找到头结点,对照两个链表头结点后,确定头结点,再确定头结点下一个结点,循环递归的如前面一样操作确定每一个结点位置,同一时候考虑边界条件,假设两个链表为空。则肯定无需合并了,就是空链表,
                            
                            
                                分类:
编程语言   时间:
2016-02-29 12:43:38   
                                阅读次数:
326
                             
                         
                    
                        
                            
                            
                                题目:合并两个有序链表。递归实现参考代码:LinkList*Merge(LinkList*pHead1,LinkList*pHead2)
{
	if(pHead1==NULL)
	{
		returnpHead2;
	}
	elseif(pHead2==NULL)
	{
		returnpHead1;
	}
	LinkList*pNewMergeHead=NULL;
	if((pHead1->data)<(pHead2->data))
	{
		pN..
                            
                            
                                分类:
其他好文   时间:
2016-02-20 01:52:35   
                                阅读次数:
172
                             
                         
                    
                        
                            
                            
                                #include<stdio.h>
#include<stdlib.h>
#defineN10
typedefstructstudent
{
intnum;
floatscore;
structstudent*next;
}stu;
stu*creat()
{
inti;
stu*p,*head=NULL,*tail=head;
for(i=0;i<N;i++)
{
p=(stu*)malloc(sizeof(stu));
scanf("%d%f",&p->nu..
                            
                            
                                分类:
其他好文   时间:
2016-02-19 14:31:55   
                                阅读次数:
239