- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
“数据结构和算法II”课程实验报告
实验名称:查找和排序算法的实现
班级 姓名 学号 实验日期:
实验机时:2 学时 实验成绩:
-------------------------------------------------------------------------------
实验目的:
掌握有序表、无序表查找的基本思想及存储、运算的实现
熟练掌握常用排序算法的基本思想及实现
深刻理解各种算法的特点,并加以灵活应用
加深对查找和排序的理解,逐步培养解决实际问题的编程能力
加深对图的理解,逐步培养解决实际问题的编程能力实验内容:
(1)基本实验内容:
建立一个无序表并实现其上的顺序查找;建立一个有序表并实现其上的折半查找;
实现插入排序、起泡排序、快速排序和希尔排序的基本算法;
(2) 扩展实验内容:
建立二叉排序树并在其上查找指定关键字。
程序及注释:
1.顺序查找与二分法查找:
#includestdio.h
#includestdlib.h
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int status ;
typedef int ElemType ;
typedef struct{
ElemType *elem;
int length,listsize;
}SqList;
int n;
status InitList(SqList L)//初始化{L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) exit(OVERFLOW);
L.listsize=LIST_INIT_SIZE;
L.length=0;
return OK;}
status Build(SqList L)//建立表{int i;
printf(请输入元素个数n和n个元素\n);scanf(%d,n);
if(nLIST_INIT_SIZE)//如果n大于当前空间{L.elem=(ElemType *)realloc(L.elem,(n+LISTINCREMENT)*sizeof(ElemType));
if(!L.elem) exit(OVERFLOW);
L.listsize=n+LISTINCREMENT;}
for(i=0;in;i++)
scanf(%d,L.elem+i);
L.length=n;
return OK;}
void Sort(SqList L)//冒泡排序(升序){int i,j,t;
for(i=1;iL.length;i++)
for(j=0;jL.length-i;j++)
{if(*(L.elem+j)*(L.elem+j+1))
{t=*(L.elem+j);
*(L.elem+j)=*(L.elem+j+1);
*(L.elem+j+1)=t;}}}
void sunxv(SqList L,int x)//顺序查找函数 { int i,k=0;
for(i=0;in;i++)
{ if(x==*(L.elem+i))
{printf(已找到您查找的元素:%d\n,x);k=1;break;} }if(k==0)
printf(未找到您查找的元素\n);}int erfen(SqList L,int x)//二分法查找函数 { int left,mid,right;
left=0;right=n-1;
while(left=right)
{ mid=(left+right)/2;
if(*(L.elem+mid)x)
left=mid+1;
else if(*(L.elem+mid)x)
right=mid-1;
else
{printf(已找到您查找的元素:%d\n,x);return 0;}}printf(未找到您查找的元素\n);}int main()
{int op,x,sign=1;
SqList L,Lb;
InitList(L);
Build(L);
Sort(L);
while(sign)
{printf(请选择要执行的查找方式:\n 【1】顺序查找\n 【2】二分查找\n 【0】退出\n);scanf(%d,op);
if(op==0)
您可能关注的文档
- 拓展训练卓越圈1109重点.ppt
- 计算机数据安全剖析.ppt
- 计算机基础知识试题和答案剖析.doc
- 挖出词汇的源头1重点.ppt
- 新人教一轮要点重点梳理突破-必修2Unit4Wildlifeprotection重点.doc
- 计算机基础知识试题及答案(三)剖析.doc
- 自考近代史纲要第八章社会主义基本制度的全面确立剖析.ppt
- 计算机算法复习重点剖析.ppt
- 自考审计学第二章剖析.ppt
- 计算机算法设计与(第4版)第6章剖析.ppt
- 财会从业资格考试题与参考答案.docx
- 2024年全球及中国干湿两用吸尘器电机行业头部企业市场占有率及排名调研报告.docx
- 2024-2030全球饲料原料烘干机行业调研及趋势分析报告.docx
- 2024-2030全球AIoT智能化物联网平台行业调研及趋势分析报告.docx
- 货物运输理论练习题+答案.docx
- 2024年全球及中国汽车重负荷齿轮油行业头部企业市场占有率及排名调研报告.docx
- 2024年全球及中国平菇壳聚糖行业头部企业市场占有率及排名调研报告.docx
- 2024年全球及中国低熔点长丝行业头部企业市场占有率及排名调研报告.docx
- 2024-2030全球软磁合金吸波材料行业调研及趋势分析报告.docx
- 2024-2030全球便携式微泄漏测试仪行业调研及趋势分析报告.docx
文档评论(0)