没有合适的资源?快使用搜索试试~ 我知道了~
数据结构(C语言版)实验报告-(内部排序算法比较).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 9 浏览量
2023-08-14
22:21:51
上传
评论
收藏 1.18MB PDF 举报
温馨提示
试读
23页
数据结构(C语言版)实验报告-(内部排序算法比较).pdf
资源推荐
资源详情
资源评论
。
-可编辑修改-
《数据结构与算法》实验报告
一、 需求分析
问题描述:
在教科书中,各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概
执行时间。试通过随机数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。
基本要求:
(l)对以下 6 种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希
尔排序、堆排序。
(2)待排序表的表长不小于 100000;其中的数据要用伪随机数程序产生;至少要用 5 组不同的输入数据
作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为 3 次移动)。
(3)最后要对结果作简单分析,包括对各组数据得出结果波动大小的解释。
数据测试:
二.概要设计
1. 程序所需的抽象数据类型的定义:
typedef int BOOL; //说明 BOOL 是 int 的别名
typedef struct StudentData { int num; //存放关键字
}
Data; typedef struct LinkList { int Length; //数组长度
Data Record[MAXSIZE]; //用数组存放所有的随机数
} LinkList int RandArray[MAXSIZE]; //定义长度为 MAXSIZE 的随机数组
void RandomNum() //随机生成函数
。
-可编辑修改-
void InitLinkList(LinkList* L) //初始化链表
BOOL LT(int i, int j,int* CmpNum) //比较 i 和 j 的大小
void Display(LinkList* L) //显示输出函数
void ShellSort(LinkList* L, int dlta[], int t,int* CmpNum, int* ChgNum)
//希尔排序
void QuickSort (LinkList* L, int* CmpNum, int* ChgNum)
//快速排序
void HeapSort (LinkList* L, int* CmpNum, int* ChgNum)
//堆排序
void BubbleSort(LinkList* L, int* CmpNum, int* ChgNum)
//冒泡排序
void SelSort(LinkList* L, int* CmpNum, int* ChgNum)
//选择排序
void Compare(LinkList* L,int* CmpNum, int* ChgNum)
//比较所有排序
2 .各程序模块之间的层次(调用)关系:
。
-可编辑修改-
二、 详细设计
typedef int BOOL; //定义标识符关键字 BOOL 别名为
int typedef struct StudentData //记录数据类型
{
int num; //定义关键字类型
}Data; //排序的记录数据类型定义
typedef struct LinkList //记录线性表
。
-可编辑修改-
{
int Length; //定义表长
Data Record[MAXSIZE]; //表长记录最大值
}LinkList; //排序的记录线性表类型定义
int RandArray[MAXSIZE]; //定义随机数组类型及最大值
/******************随机生成函数********************/
void RandomNum()
{
int i; srand((int)time(NULL)); //用伪随机数程序产生伪随机数
for(i=0; i 小于 MAXSIZE; i++) RandArray[i]<=(int)rand(); 返回;
}
/*****************初始化链表**********************/
void InitLinkList(LinkList* L) //初始化链表
{
int i;
memset(L,0,sizeof(LinkList));
RandomNum();
for(i=0; i 小于<MAXSIZE; i++)
L->Record[i].num<=RandArray[i]; L->Length<=i;
}
BOOL LT(int i, int j,int* CmpNum)
{
。
-可编辑修改-
(*CmpNum)++; 若 i<j) 则返回 TRUE; 否则返回 FALSE;
}
void Display(LinkList* L)
{
FILE* f; //定义一个文件指针 f int i;
若打开文件的指令不为空则 //通过文件指针 f 打开文件为条件判断
{ //是否应该打开文件 输出“can't open file”;
exit(0); }
for (i=0; i 小于 L->Length; i++)
通过文件指针 f 关闭文件;
三、 调试分析
1. 调试过程中遇到的问题及经验体会:
在本次程序的编写和调试过程中,我曾多次修改代码,并根据调试显示的界面一次次调整代码。在
调试成功之前,我的程序因为 3 个错误而无法运行,在经过完整并且仔细的检查后,发现 3 处错误
分别是没有定义变量就直接套用、忘记加指针符号、忘记在嵌套语句后加大括号,这些看似不显眼
的小问题却导致整个程序无法运行,所以我认为在编程过程中要及其严谨,尽量少犯或避免犯语法
错误,保证代码的完整性。
2. 算法的时空分析:
1.稳定性比较: 插入排序、冒泡排序、简单选择排序及其他线形排序是稳定的; 希尔排序、快
速排序、堆排序是不稳定的。
2.时间复杂性比较: 插入排序、冒泡排序、选择排序的时间复杂性为 O(n2); 其它非线形排序
剩余22页未读,继续阅读
资源评论
hhappy0123456789
- 粉丝: 59
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功