import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestSort { //可以对不同表长进行比较;由于表中数据为随机数据,所以每次执行都是一组新的数据
private static int[]arr1;
private static int[]arr2;
private static int n = 0;//表长
public static int[] array(){//确保每次传值都相同
for(int i=0;i<n;i++)
arr2[i]=arr1[i];
return arr2;
}
public static int input(){
BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));//输入数据
try{
return Integer.parseInt(bf.readLine());//将数据转换为整型
}catch(Exception e){ //捕捉异常,并进行异常处理
System.out.println("输入错误,请重新输入!");//输入错误,需要重新输入
return input();
}
}
public static void main(String[] args){
//将各个类实例化,以调用其内部方法
BubbleSort myBubbleSort=new BubbleSort();
InsertSort myInsertSort=new InsertSort();
SelectSort mySelectSort=new SelectSort();
QuickSort myQuickSort =new QuickSort();
ShellSort myShellSort =new ShellSort();
HeapSort myHeapSort =new HeapSort();
System.out.println("*********************************************************************************************************");
System.out.println(" ------------------------");
System.out.println(" * 内部排序算法的性能分析 *");
System.out.println(" ------------------------");
System.out.println("*********************************************************************************************************");
System.out.println("请输入待排序表的表长:");
n=input();
int numOfD=3;//希尔循环数
int num=0;//选择操作
int []d={n/2,n/4,1};//希尔增量值
arr1=new int[n];//数组arr1存放表中数据
arr2=new int[n];//数组arr2用来传值
System.out.println("*********************************************************************************************************");
System.out.println(" ***待排序表中的数据如下所示***");
System.out.println("*********************************************************************************************************");
for(int i=0;i<n;i++){
arr1[i]=(int) (Math.random()*1000);//随机获取一组值
if(i%20!=0||i==0){
System.out.print(arr1[i]+" ");
}
else{
System.out.println(arr1[i]+" ");
}
}
System.out.println("\n*********************************************************************************************************\n");
do{
System.out.println("\t1.起泡排序\n"
+"\t2.直接插入排序\n"
+"\t3.选择排序\n"
+"\t4.快速排序\n"
+"\t5.希尔排序\n"
+"\t6.堆排序\n"
+"\t7.以上各种排序\n"
+"\t0.退出程序\n");
System.out.println("请选择需要进行的操作:");
num=input();
switch(num){
case 1: {//调用气泡排序
myBubbleSort.bubbleSort(array());
myBubbleSort.output();
break;
}
case 2: {//调用直接插入排序
myInsertSort.insertSort(array());
myInsertSort.output();
break;
}
case 3: {//调用选择排序
mySelectSort.selectSort(array());
mySelectSort.output();
break;
}
case 4: {//调用快速排序
myQuickSort.quickSort(array());
myQuickSort.output();
break;
}
case 5: {//调用希尔排序
myShellSort.shellSort(array(), d, numOfD);
myShellSort.output();
break;
}
case 6: {//调用堆排序
myHeapSort.heapSort(array());
myHeapSort.output();
break;
}
case 7: {//所有排序比较
System.out.println("\n***几种排序比较如下***\n");
myBubbleSort.bubbleSort(array());
myInsertSort.insertSort(array());
mySelectSort.selectSort(array());
myQuickSort.quickSort(array());
myShellSort.shellSort(array(), d, numOfD);
myHeapSort.heapSort(array());
break;
}
case 0: {//退出系统
System.out.println("*********************************************************************************************************");
System.out.println(" -------------------");
System.out.println(" * 您已安全退出系统 *");
System.out.println(" -------------------");
System.out.println("*********************************************************************************************************");
System.exit(0);
}
default: break;//输入错误,需要重新输入
}
}while(num!=0);
}
}
java 内部排序算法的性能分析
4星 · 超过85%的资源 需积分: 12 194 浏览量
2011-08-25
16:24:46
上传
评论 1
收藏 19KB RAR 举报
美丽人生
- 粉丝: 61
- 资源: 72
最新资源
- 同态加密python.zip
- 基于Python的PCA人脸识别算法的原理及实现代码详解+源码+详细代码解析+开发文档+数据(毕业设计&课程设计&项目开发)
- Decision tree20240105(1).ipynb
- zuoyezuoyezuoye
- zuoyezuoyezuoye
- 机械设计电机转子装配设备sw22非常好的设计图纸100%好用.zip
- 作业作业作业作业作业作业
- xdotool.c
- RLMD鲁棒性局部均值分解信号分量可视化(Matlab完整源码和数据)
- Screenshot_2024-04-26-17-17-26-36_9d26c6446fd7bb8e41d99b6262b17def.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页