ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:35.53KB ,
资源ID:18248739      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-18248739.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第八次数据结构上机实验报告.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第八次数据结构上机实验报告.docx

1、第八次数据结构上机实验报告一、调试成功程序及说明1、题目:2实现快速排序算法 算法思想:1.设置两个变量i、j,排序开始的时候:i=0,j=N-1;2.以第一个数组元素作为关键数据,赋值给key,即key=A0;3.从j开始向前搜索,即由后开始向前搜索(j-),找到第一个小于key的值Aj,将Aj和Ai互换;4.从i开始向后搜索,即由前开始向后搜索(i+),找到第一个大于key的Ai,将Ai和Aj互换;5.重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中Aj不小于key,4中Ai不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,

2、进行交换的时候i, j指针位置不变。另外,i=j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。源程序:#include #include void swap(int *x,int *y) int temp; temp = *x; *x = *y; *y = temp;int choose_pivot(int i,int j ) return(i+j) /2);void quicksort(int list,int m,int n) int key,i,j,k; if( m n) k = choose_pivot(m,n); swap(&listm,&listk); key = li

3、stm; i = m+1; j = n; while(i = j) while(i = n) & (listi = m) & (listj key) j-; if( i j) swap(&listi,&listj); / 交换两个元素的位置 swap(&listm,&listj); / 递归地对较小的数据序列进行排序 quicksort(list,m,j-1); quicksort(list,j+1,n); void printlist(int list,int n) int i; for(i=0;in;i+) printf(%dt,listi);void main() const int M

4、AX_ELEMENTS = 10; int listMAX_ELEMENTS; int i = 0; printf(请输入十位排序的数字,按enter终止输入:); for(i = 0; i MAX_ELEMENTS; i+ ) scanf(%d,&listi); printf(排序前的序列:n); printlist(list,MAX_ELEMENTS); / sort the list using quicksort quicksort(list,0,MAX_ELEMENTS-1); / print the result printf(使用快速排序算法进行排序之后的序列:n); print

5、list(list,MAX_ELEMENTS);运行结果:2、题目:3实现堆排序算法;算法思想:1. 先将初始文件R1.n建成一个大根堆,此堆为初始的无序区2. 再将关键字最大的记录R1(即堆顶)和无序区的最后一个记录Rn交换,由此得到新的无序区R1.n-1和有序区Rn,且满足R1.n-1.keysRn.key3.由于交换后新的根R1可能违反堆性质,故应将当前无序区R1.n-1调整为堆。然后再次将R1.n-1中关键字最大的记录R1和该区间的最后一个记录Rn-1交换,由此得到新的无序区R1.n-2和有序区Rn-1.n,且仍满足关系R1.n-2.keysRn-1.n.keys,同样要将R1.n-2

6、调整为堆。源程序:#include #define SUCCESS 0#define ERROR -1/* * 调整堆 * index 是数组下标,从0开始 */int HeapSort_adjust(int * piBuffer, const unsigned int uiSize, const unsigned int uiIndex) int * piTmp = piBuffer; unsigned int i = uiIndex; unsigned int uiChild = i; int iTmpValue = 0; if (NULL = piTmp) | (uiSize = uiS

7、ize) /* 入参判断 */ return ERROR; for (i = uiIndex; i uiSize ; i = uiChild) uiChild = 2 * i + 1; /* 找到子结点中较大的 */ if (uiChild piBufferuiChild) uiChild+; /* 判断较大的子结点是否比父结点大 */ if (uiChild piBufferi) iTmpValue = piBufferi; piBufferi = piBufferuiChild; piBufferuiChild = iTmpValue; else /* 如果左右子结点都比父结点小,那么可以

8、肯定这是一个大根堆了,可以结束循环了 */ break; return SUCCESS;/* * 堆排序,这里使用大根堆,按照从小到大排序 * uiSize 是数组大小,从1开始 */int HeapSort(int * piBuffer, const unsigned int uiSize) int * piTmp = piBuffer; int i = (uiSize - 2)/2; int iTmpValue = 0; if (NULL = piTmp) | (uiSize = 0; i-) /* 数组下标从0开始,所以i的初始值为(uiSize - 2)/2 */ HeapSort_a

9、djust(piBuffer, uiSize, i); /* 把第0个元素与最后一个元素对调,重新调整堆 */ for (i = uiSize - 1; i 0; i-) iTmpValue = piBufferi; piBufferi = piBuffer0; piBuffer0 = iTmpValue; HeapSort_adjust(piBuffer, i, 0); /* 每次只需要调整前i个元素即可 */ return SUCCESS;/* * 打印数组内容 */int HeapSort_print(int * piBuffer, const unsigned int uiSize)

10、int * piTmp = piBuffer; int i = 0; if (NULL = piTmp) /* 入参判断 */ return ERROR; /* 打印数组内容,中间以逗号隔开 */ for (i = 0; i uiSize; i+) if (0 = i) printf(%d, piTmpi); else printf( %d, piTmpi); printf(n); return SUCCESS;int main(int argc, char * argv) int i,array10; printf(输入用于堆排序的十个数:n); for(i=0;i10;i+) scanf(%d,&arrayi); printf(排序后为:n); HeapSort(array, sizeof(array)/sizeof(array0); /* 堆排序 */ HeapSort_print(array, sizeof(array)/sizeof(array0); /* 第二个参数是数组中元素个数,所以不能简单的用sizeof */ return SUCCESS;运行结果:

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2