资源描述:
《算法导论实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、算法导论实验报告实验题目:1、产生个数为22,24,26,28,210,212,214,216,218,220的字符串数组,要求每个字符串由随机产生的1~16位的字母组成,然后用插入排序、冒泡排序、堆排序、快速排序、归并排序对字符串进行排序。2、产生个数为22,24,26,28,210,212,214,216,218,220的整数数组,要求每个数组有随机产生的1~10000的整数组成,然后用插入排序、快速排序、基数排序、计数排序对整数数组进行排序。实验分析:在该实验中,我们通过对字符串和整数的排序,切实体会了在大规模的数据中算法的重要性。对于整个实验的流程大致分
2、为4个部分:1、随机个数的随机字符串和随机个数的整数的产生。2、各种排序算法的实现:插入排序、冒泡排序、堆排序、快速排序、归并排序、基数排序、计数排序。3、对程序运行时间的记录,利用系统时间进行统计。4、对实验的数据进行分析,观察出O(n2),O(n),O(lgn)的时间复杂度的算法在实践中的差距。下面进行具体分析:一、随机个数的随机字符串和随机个数的整数的产生对于第一个实验,要求产生一个给定长度的随机的随机长度为1~16的字符串。分析要求后,感觉如果要提高算法的效率和节省空间,必须采取动态分配的方案。因为如果用c中的定长分配,太浪费空间。而如果采用c++中的动
3、态数组,会造成空间无法回收的问题和字符串传递时必须进行copystring的操作,太浪费时间。我们用动态分配地址的二维数组来存储随机产生的字符串组,程序如下:str=(char**)malloc((lenw+1)*sizeof(char*));for(i=1;i