链表的排序

原创 2015年07月09日 11:27:14

链表可以用多种方式去排序,但是链表就只有那么几种:

    (1)插入排序    (适合)

    (2)冒泡排序    (适合)

    (3)希尔排序    (适合)

    (4)选择排序    (适合)

    (5)快速排序    (不适合)

    (6)合并排序    (不适合)

    (7)基数排序    (不适合)

    (8)堆排序        (不适合)

这里只写链表的插入算法的排序,性能比较优

void *Sort(Snode *head){

head *pre,curr,*p,*q;

p=head->next;

head->neaxt=NULL;//断开头结点

while(p!=NULL){

pre=head;

curr=pread->next;

if(curr!=NULL&&curr->data<p->data){

pre=curr;

curr=curr->next;

}//比较节点大小,但是注意首次比较不执行哦,同学们仔细阅读代码啊

q=p;

p=p->next;

q->next=pre->next;//吼吼,开始插入节点喽

pre->next=q;

}

}

PS:代码实际非常简单,本人极不喜欢冒泡插入,如果我是面试官,这道题有人用冒泡,OK,pass.希望大家能写出比较高效的代码,勤思考,多动脑。

数据结构--链表的排序详解

1、前言 前面两篇博客,我已经把线性表的两种基本的表示形式,做了一个基本的介绍和一些对比。但是,我突然发现在链表这里我缺少一个很重要的内容,那就是对我们的链表进行排序,其实,在连接两个链表的时候,就...
  • qq_35644234
  • qq_35644234
  • 2016年11月18日 22:18
  • 6877

【链表】C++链表创建、删除、排序,合并

实现C++链表的创建、删除、排序、合并(保持单调不减) 思路: 方法1:如果将两链表头尾相接后再整体排序,复杂度太高。因此可以利用链表已经排好序的特点进行逐步合并。用两个指针p1、p2指向两链表头结点...
  • yebanxin
  • yebanxin
  • 2016年07月19日 10:32
  • 2929

链表箱子排序问题

箱子排序 1,逐个删除输入链表的节点,把删除节点分配到相应的箱子里 2,把每个箱子中的链表收集并连接起来,使其成为一个有序链表 (即连续删除链表首元素,并将其插入某个箱子的链表首位,然后从...
  • qq_34637408
  • qq_34637408
  • 2017年05月07日 15:46
  • 192

实现单链表的排序(递增)

node *sort(node *head) // 单链表的排序 { printf("单链表的排序:\n"); node *p, *p2, *p3; int n = length(head), ...
  • taotaoah
  • taotaoah
  • 2015年09月30日 19:54
  • 1191

在单链表上实现插入排序

问题:给单链表排序(升序排列,要保持稳定性),要求通过改变结点的next指针从而改变结点的位置,而不是只交换结点的值来使得其有序!时间复杂度为O(N^2),空间复杂度为O(1)。...
  • Jacketinsysu
  • Jacketinsysu
  • 2016年09月17日 20:10
  • 3815

用c++写的单链表排序

头文件node.h#pragma once template class Node { public: T data; Node * next; Node(); Node(T data, N...
  • Doraemon___
  • Doraemon___
  • 2016年11月18日 21:12
  • 1465

单链表排序----快排 & 归并排序

题目描述:   给定一个乱序的单链表的头节点,对该链表中的节点进行排序    要求时间复杂度为O(nlgn),空间复杂度为O(1)        分析:   由于题目要求时间复杂度我...
  • u012658346
  • u012658346
  • 2016年04月13日 10:48
  • 8405

单链表排序之直接插入排序

****单链表排序之直接插入排序**** /*前段时间刚学会几种排序方法,最近学习了单链表,就用来试试,本篇链表的排序方法讲述的是单链表的直接插入排序;(注意:请仔细看准节点结构...
  • bitboss
  • bitboss
  • 2016年06月07日 20:28
  • 2688

lintcode-合并k个排序链表-104

合并k个排序链表,并且返回合并后的排序链表。尝试分析和描述其复杂度。 样例 给出3个排序链表[2->4->null,null,-1->null],返回 -1->2->4->null /** ...
  • ljlstart
  • ljlstart
  • 2015年10月19日 21:20
  • 718

剑指offer之合并两个排序的链表(Python)

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。...
  • u010636181
  • u010636181
  • 2017年10月17日 14:33
  • 151
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:链表的排序
举报原因:
原因补充:

(最多只允许输入30个字)