- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验五课案
1.
实验步骤:
先定义顺序表的结点:
typedef struct
{
KeyType key;
InfoType otherinfo;
}ElemType;
typedef struct
{
ElemType *R;
int length;
}SqList;
然后定义一个随机取数的函数,存到顺序表中:
void CreateList(SqList L,int n)
然后定义一个显示顺序表的函数,将顺序表中的数据显示出来:
void ListTraverse(SqList L)
然后通过排序函数,将所有的数据按照从大到小的顺序排列:
void BubbleSort(SqList L)
实验结果:
测试数据:
38 86 9 88 29 18 58 27
排序后:
9 18 27 29 38 58 86 88
BubbleSort排序方法中数据的比较次数为:27
疑难小结:
这个程序的难点在于排序函数,总是把从第几个数开始排序 以及怎样循环弄错。
源代码:
#includeiostream
using namespace std;
#includetime.h
typedef int KeyType;
typedef char * InfoType;
typedef struct
{
KeyType key;
InfoType otherinfo;
}ElemType;
typedef struct
{
ElemType *R;
int length;
}SqList;
int CmpNum;
void CreateList(SqList L,int n)
{
int i;
L.R=new ElemType[n+1];
srand(time(0));
for(i=1;i=n;i++)
{
L.R[i].key=rand()%100;
}
L.length=n;
}
void ListTraverse(SqList L)
{
int i;
for(i=1;i=L.length;i++)
coutL.R[i].key\t;
coutendl;
}
void BubbleSort(SqList L)
{
int m,flag,i;
m=L.length-1;flag=1;
while(m0flag)
{
flag=0;
for(i=1;i=m;i++)
{
CmpNum++;
if(L.R[i].keyL.R[i+1].key)
{
flag=1;
L.R[0]=L.R[i+1];
L.R[i+1]=L.R[i];
L.R[i]=L.R[0];
}
}
m--;
}
}
void main()
{
SqList L;
CreateList(L,8);
cout测试数据:endl;
ListTraverse(L);
BubbleSort(L);
cout排序后:endl;
ListTraverse(L);
coutBubbleSort排序方法中数据的比较次数为:CmpNumendl;
}
2
实验步骤:
先声明一个结点:
typedef struct
{
KeyType key;
InfoType otherinfo;
}ElemType;
typedef struct
{
ElemType *R;
int length;
}SqList;
然后建立一个建表函数:void CreateList(SqList L),将十个关键字输入到表中。
建立一个遍历函数void ListTraverse(SqList L)用以显示排序前后的数据。
分别建立四个排序方法:
直接插入排序:void InsertSort(SqList L)
折半插入排序void InsertSort(SqList L)
希尔排序:void ShellSort(SqList L , int dt[] , int t)
void ShellInsert(SqList L , int dk)
快速排序:int Partition(SqList L , int low, int high)
void QSort(SqList L , int low, int high)
void QuickSort(SqList L)
实验结果:
测试数据:
1. 增量为2 ,该算法执行3趟
测试数据:
12 2 16
文档评论(0)