云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 链表实现排序算法

链表实现排序算法

  • 62 次阅读
  • 3 次下载
  • 2025/6/3 11:41:06

北京邮电大学信息与通信工程学院

数 据 结 构

实验名称:学生姓名:班 级:班内序号:学 号:日 期: 实 验 报 告

实验三 排序 15 2016.12.19

第1页

北京邮电大学信息与通信工程学院

1. 实验要求 题目2

使用链表实现下面各种排序算法,并进行比较。 排序算法:

1、插入排序 2、冒泡排序 3、快速排序 4、简单选择排序 5、其他

要求:

1、测试数据分成三类:正序、逆序、随机数据

2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。

3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到微秒(选作)

4、对2和3的结果进行分析,验证上述各种算法的时间复杂度

编写测试main()函数测试线性表的正确性

2. 程序分析

2.1 存储结构

我使用了线性表的链式存储结构,通过建立双向循环链表进行顺序存取。

每个节点分为data、next、previor。data域称为数据域,数据通过node结构存储待排序的信息;next为指针域,用来储存直接后继的地址;prior为指针域,用来储存直接前继的地址;

struct Node {

int data;

struct Node*next; struct Node*previor; };

第2页

北京邮电大学信息与通信工程学院

2.2 程序流程 (或程序结构、或类关系图等表明程序构成的内容,一般为流程图等)

建立 类对象 显示菜单 插入排序 冒泡排序 快速排序 简单选择排序 否 是否退出

结束 是 class LinkList {

private:

Node* partion(Node*first,Node*end); //快速排序一趟 public:

Node*front;

int comparision; //比较次数 int movement; //移动次数 LinkList() //无参构造 { front = new Node; front->next = NULL; front->previor = NULL; comparision = movement = 0; }

LinkList(int a[],int n); //构造函数:建立双向链表

第3页

北京邮电大学信息与通信工程学院

void insertsort(); //插入排序 void bubblesort(); //冒泡排序 void Qsort(Node*x,Node*y); //快速排序 void selectsort(); //简单选择排序 void show(); //显示排序结果 ~LinkList(); //析构函数 };

2.3 关键算法分析

构造函数:通过使用头插法建立双向链表,其关键是多设一个指针变量用于储

存上一个末节点的地址,这样才能使节点指向其上一个节点。在这次排序实验中,使用双向循环链表更方便进行遍历操作。

LinkList::LinkList(int a[],int n) {

front = new Node; front->next = NULL; front->previor = NULL;

comparision = movement = 0; Node*x = new Node; Node*s = new Node; s->data = a[n - 1]; s->next = front; s->previor = front; front->next = s; front->previor = s; x = s;

for (int i = n - 2; i >= 0; i--) {

Node*s = new Node; s->data = a[i];

s->next = front->next;

s->previor = front; front->next = s;

x->previor = s; x = s; } }

插入排序函数:将front头节点当作哨兵。从第二个有效节点开始进行插入,进

行边查找,边后移的操作。

void LinkList::insertsort() {

Node*p = front->next; Node*s = p->next; while (s!=front)

第4页

搜索更多关于: 链表实现排序算法 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

北京邮电大学信息与通信工程学院 数 据 结 构 实验名称:学生姓名:班 级:班内序号:学 号:日 期: 实 验 报 告 实验三 排序 15 2016.12.19 第1页 北京邮电大学信息与通信工程学院 1. 实验要求 题目2 使用链表实现下面各种排序算法,并进行比较。 排序算法: 1、插入排序 2、冒泡排序

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com