java数据结构大作业.pdf
《java数据结构大作业.pdf》由会员分享,可在线阅读,更多相关《java数据结构大作业.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、上海电力学院上海电力学院数据结构(数据结构(JAJAV VA A)课程设计)课程设计题目:学生姓名:学号:院系:专业年级:21.*各种排序算法时间性能比较20122014年1月日15目录目录一、设计题目一、设计题目.2.2二、需求分析二、需求分析.2.2三、概要设计三、概要设计.2.2四、详细设计四、详细设计.4.4五、调试分析五、调试分析.11.11六、创新点六、创新点.13.13七、附录:程序设计源代码七、附录:程序设计源代码.13.131一、设计题目一、设计题目1)1)问题描述问题描述对各种排序方法(直接插入排序、希尔排序、起泡排序、快速排序、直接选择排序、堆排序和归并排序)的时间性能进
2、行比较。2)2)基本要求基本要求(1)设计并实现上述各种排序算法;(2)产生正序和逆序的初始排列分别调用上述排序算法,并比较时间性能;(3)产生随机的初始排列分别调用上述排序算法,并比较时间性能。二、需求分析二、需求分析1 1)运行环境(软、硬件环境)运行环境(软、硬件环境)开发工具:JDK1.6 eclipse10.0运行环境:Windows XP 及其以上系统2 2)输入的形式和输入值的范围)输入的形式和输入值的范围用户先自定义数组长度,再根据提示输入数组。3 3)输出的形式描述)输出的形式描述输出 4 个排序功能分别对于用户输入的数组进行排序后,所移动的次数,比较的次数,以及相应的运行时
3、间。4 4)功能描述)功能描述能用多种排序算法对相应数组进行正序,逆序排序。能对随机生成的数组进行排序并输出相应时间。5 5)测试数据)测试数据用户输入的数据。三、概要设计三、概要设计1 1)抽象数据类型定义描述)抽象数据类型定义描述n数组长度循环变量table数组temp temp1临时变量22 2)功能模块设计(如主程序模块设计)功能模块设计(如主程序模块设计)Zhujiemian主程序Shunxu顺序,调用4个排序,输出结果Nixu逆序,调用4个排序,输出结果Rradom随机生成数组,调用排序方法,输出结果Paixu包含 4 种排序算法Insertsort直接插入排序Shellsort希
4、尔排序bubblesort冒泡排序Selectsort直接选择排序3 3)模块层次调用关系图)模块层次调用关系图主界面Zhujiemian顺序shunxu逆序nixu随机ramdomramdom排序paixupaixu直接插入排序insertsort希尔排序shellsort冒泡排序bubblesort直接选择排序selectsort3四、详细设计四、详细设计主页面主页面importimport java.util.*;/引入包,使实现reader功能publicpublic classclass zhujiemian/主界面 publicpublic staticstatic intint
5、table;/定义数组tableSystem.out.println(1.对数组进行顺序排序);publicpublic staticstatic voidvoid main(String args)intint n=0;/定义循环变量whilewhile(n!=4)/进行循环 System.out.println(2.对数组进行逆序排序);System.out.println(3.产生10个随机数组比较各时间性能);System.out.println(4.退出);Scanner reader=newnew Scanner(System.in);/读入数据 n=reader.nextInt(
6、);switchswitch(n)casecase 1:shunxu();breakbreak;casecase 2:nixu();breakbreak;casecase 3:Rradom();breakbreak;casecase 4:breakbreak;defaultdefault:breakbreak;publicpublic staticstatic voidvoid shunxu()/顺序4 Scanner reader=newnew Scanner(System.in);System.out.println(请输入数组的长度:);intint i=reader.nextInt()
7、;/读入数据itable=newnew intinti;/声明并创建数组initA(table,i);paixu px=newnew paixu();/运行排序方法px.insertSort(table);px.shellSort(table);px.bubbleSort(table);px.selectSort(table);publicpublic staticstatic voidvoid nixu()/逆序intint t;Scanner reader=newnew Scanner(System.in);publicpublic staticstatic voidvoid Rradom
8、()/随机排序String s1=nullnull,s2=nullnull;/定义空串,用于之后排序算法的System.out.println(请输入数组长度:);intint i=reader.nextInt();table=newnew intinti;initA(table,i);paixu px=newnew paixu();px.insertSort(table);px.shellSort(table);px.bubbleSort(table);px.selectSort(table);比较intint min,num1=0,max,num2=0,j;table=newnew int
9、int10;initB(table,10);paixu px=newnew paixu();px.insertSort(table);px.shellSort(table);px.bubbleSort(table);5px.selectSort(table);min=px.n0;max=px.n0;forfor(j=1;j3;j+)ifif(px.njmax)num2=j;max=px.nj;num1=j;min=px.nj;switchswitch(num1)casecase 0:s1=直接插入排序;breakbreak;casecase 1:s1=希尔排序;breakbreak;casec
10、ase 2:s1=冒泡排序;breakbreak;casecase 3:s1=直接选择排序;breakbreak;defaultdefault:breakbreak;switchswitch(num2)casecase 0:s2=直接插入排序;breakbreak;casecase 1:s2=希尔排序;breakbreak;casecase 2:s2=冒泡排序;breakbreak;casecase 3:s2=直接选择排序;breakbreak;defaultdefault:breakbreak;System.out.println(最佳排序:+s1);System.out.println(最
11、差排序:+s2);6publicpublic staticstatic voidvoid initA(intinttable,intint n)System.out.println(请输入数组:);forfor(intint i=0;in;i+)Scanner reader=newnew Scanner(System.in);tablei=reader.nextInt();publicpublic staticstatic voidvoid initB(intint table,intint n)/产生随机数组forfor(intint i=0;in;i+)tablei=(intint)(Ma
12、th.random()*50);/产生050之间的随机数排序代码:排序代码:publicpublic classclass paixu publicpublic staticstatic intint n=newnew intint4;publicpublic staticstatic intint m=newnew intint4;/n是比较次数,m是交换次数;publicpublicvoidvoid insertsort(intinttable)/直接插入排序longlong t0,t1,t2;t0=System.nanoTime();/定义时间 forfor(intint i=1;i=0
13、&temptablej;j-)/将前面较大的元素向后移动 tablej+1=tablej;tablej+1=temp;/temp值达到插入位置 intint temp2=newnew intinttable.length;forfor(intint i=1;i=0&temp10;delta/=2)/若干趟扫描,控制增量,增量减半 n1+;forfor(intint i=delta;i=0&temptablej;j-=delta)8/每组元素相距delta远,寻找插入位置 tablej+delta=tablej;n1+;tablej+delta=temp;m1+;System.out.print
14、ln(希尔排序);System.out.println(比较次数是:+n1);System.out.println(交换次数是:+m1);t1=System.nanoTime();t2=t1-t0;System.out.println(该排序所运行时间为+t2+纳秒);publicpublic voidvoid bubbleSort(intinttable)/冒泡排序 /是否交换的标记longlong t0,t1,t2;t0=System.nanoTime();booleanboolean exchange=truetrue;forfor(intint i=1;itable.length&ex
15、change;i+)/有交换时再进行下一趟,最多n-1趟 exchange=falsefalse;/假定元素未进行交换n2+;forfor(intint j=0;jtablej+1)/反序时,交换 intint temp1=tablej;tablej=tablej+1;tablej+1=temp1;9 exchange=truetrue;/有交换 m2+=2;n2+;System.out.println(冒泡排序);System.out.println(比较次数是:+n2);System.out.println(交换次数是:+m2);t1=System.nanoTime();t2=t1-t0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 数据结构 作业
限制150内