算法设计与分析验报告1.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析验报告1

攀枝花学院实验报告 实验名称:算法设计与分析课程实验 实验内容:比较排序算法的效率 实验日期:2013.03.26 院系:数学与计算机 姓名:吴永昊 学号:201010804043 同组人: 指导老师:银星 成绩: 一、【目的与任务】 通过算法的程序实现和执行时间测试、并与理论上的结论进行对比分析,深入理解算 法时间复杂度分析中对于输入数据考虑其等价类的意义,理解算法时间复杂度 二、【实验要求:】 要求编程实现将合并算法和快速排序算法以及其他另外一种算法(冒泡、插入、选择)进行比较,数组元素随机生成,最后输出到文件里,然后比较各种排序算法的所用的时间来比较其效率,编程语言不做要求。 三、【实验器材】 Pc 机一台 软件环境:eclipse 或 my eclipse。 编程语言:java. 四、【实验内容】 程序代码如下: import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.Random; public class sort { //快速排序 void quicksort(Integer num[], int low, int high) { int i, j, x; if (low high) { // 这个条件用来结束递归 i = low; j = high; x = num[i]; while (i j) { while (i j num[j] x) { j--; // 从右向左找第一个小于x的数 } if (i j) { num[i] = num[j]; i++; } while (i j num[i] x) { i++; // 从左向右找第一个大于x的数 } if (i j) { num[j] = num[i]; j--; } } num[i] = x; quicksort(num, low, i - 1); quicksort(num, i + 1, high); } } //合并排序 void MergeSort(Integer a[], int left, int right) { if (left right) { // 至少需要两个元素 int mid = (left + right) / 2; // 对左侧排序 MergeSort(a, left, mid); // 对右侧排序 MergeSort(a, mid + 1, right); // 合并两段排序数组到数组b中,再拷贝回a中 merge(a, left, mid, right); } } void merge(Integer c[], int left, int mid, int right) { // 合并两段排序数组到数组d中 int d[] = new int[right - left + 1]; int i, j, k = 0; // k为d数组的下标 i = left; j = mid + 1; while (i = mid j = right) { if (c[i] c[j]) { d[k] = c[j]; k++; j++; } else { d[k] = c[i]; k++; i++; } } for (int q = j; q = right; q++) { d[k] = c[q]; k++; } for (int q = i; q = mid; q++) { d[k] = c[q]; k++; } // 将d中数组再拷贝回c中 int pos = left; for (k = 0; k = d.length - 1; k++) { c[pos] = d[k]; pos++; } } //冒泡排序 void bubbleSort(Integer[] num) { // 比较的轮数 for (int i = 1; i num.length; i++) { // 将相邻两个数进行比较,较大的数往后冒泡 for (int j = 0;

文档评论(0)

xll805 + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档