c语言数据结构产生随机数并排序,数据结构产生随机数并排序.doc

本文介绍了一个使用C++实现的数据结构课程设计案例,主要聚焦于快速排序和堆排序两种算法的实现过程。通过自定义函数生成随机数并对其进行排序,展示了具体的排序步骤及其实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学部:信息科学与技术学部

专业:计算机科学与技术

目录

一、 1

二、实验目的和要求1

三、实验内容和原理1

四、实验环境1

五、自定义函数2

1.生成随机数的函数2

2.快速排序函数2

3.堆排序函数3

4.显示函数3

5.主函数4

六、运行截图4

七、代码清单5

实验题目

排序综合 利用随机函数产生N个随机整数,对这些数方法排序排序排序。

C++6.0

五、自定义函数

1.生成随机数的函数

/*--------------------产生随机数-------------------*/

void creat(sqlist *l)

{

int i;

printf("请输入要产生的随机数个数:");

scanf("%d",&l->length);

srand((unsigned)time(NULL)); //给srand()提供一个种子,它是一个unsigned int类型,

for(i=1;i<=l->length;i++)

{

l->r[i].key = rand() %900+100; //调用rand(),返回一个随机数(在0到32767之间)

printf("%d ",l->r[i].key);

}

printf("\n");

}

2.快速排序函数

/*交换顺序表中子表r[low...high]的记录,使枢轴记录到位,并返回其所在的位置*/

int partion(sqlist *l,int low,int high)

{ int pivotkey;

l->r[0]=l->r[low]; //用子表的第一个记录作枢轴记录

pivotkey=l->r[low].key; //枢轴记录关键字

while(low

{ while(lowr[high].key>=pivotkey) --high;

l->r[low]=l->r[high]; //将比枢轴记录小的记录移到低端

while(lowr[low].key<=pivotkey) ++low;

l->r[high]=l->r[low]; //将比枢轴记录大的记录移到低端

}

l->r[low]=l->r[0]; //枢轴记录到位

return low; //返回枢轴位置

}

/*--------------快速排序------------------*/

void Qsort(sqlist *l,int low,int high)

{ int pivotloc;

if(low

{ pivotloc=partion(l,low,high); //将l.r[low..high]一分为二

Qsort(l,low,pivotloc-1); //对低子表递归排序

Qsort(l,pivotloc+1,high); //对高子表递归排序

}

}

3.堆排序函数

/*调整h->r[s]的关键字,使h->r[s]成为一个大顶堆*/

void heapadjust(sqlist *h,int s,int m)

{ keytype rc;

int j;

rc=h->r[s];

for(j=2*s;j<=m;j*=2)

{ if(jr[j].keyr[j+1].key)

++j;

if(rc.key>=h->r[j].key) break;

h->r[s]=h->r[j];

s=j;

}

h->r[s]=rc;

}

/*对顺序表h进行堆排序*/

void heapsort(sqlist *h)

{ keytype rc;int i;

for(i=h->length/2;i>0;--i)

heapadjust(h,i,h->length);

for(i=h->length;i>1;--i)

{ rc=h->r[1];

h->r[1]=h->r[i];

h->r[i]=rc;

heapadjust(h,1,i-1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值