import java.util.Arrays;
import java.util.Scanner;
public class mainClass {
public static void main(String[] args){
String isGoOn = "y";
//int flag = 1;
//String str;
Scanner sc = new Scanner(System.in);
while (isGoOn == "y"){
System.out.println("请输入要排序的数组(每个数字用逗号隔开,回车结束):");
String str = sc.nextLine();
String[] arr = str.split(",");
//System.out.println(Arrays.toString(arr));
int[] nums = new int[arr.length];
for(int i = 0;i<nums.length;i++){
nums[i] = Integer.valueOf(arr[i]);
}
//System.out.println("要排序的数组是:"+Arrays.toString(nums));
System.out.println("选择排序方法(1.快速排序 2.归并排序 3.插入排序 4.冒泡排序 5.选择排序 6.堆排序):");
int flag = sc.nextInt();
switch (flag){
default:
quickSort qsDef = new quickSort();
qsDef.quickSort(nums,0,nums.length);
System.out.println("默认快速排序后的数组为:"+Arrays.toString(nums));
System.out.println("时间复杂度:平均、最好是O(n * log n) 最差O(n²)");
break;
case 1:
quickSort.quickSort(nums,0,nums.length);
System.out.println("快速排序后的数组为:"+Arrays.toString(nums));
System.out.println("时间复杂度:平均、最好是O(n * log n) 最差O(n²)");
System.out.println("快速排序,二分思想才为快,先分再递归");
break;
case 2:
MergeSort.mergeSort(nums,0,nums.length-1);
System.out.println("归并排序后的数组为:"+Arrays.toString(nums));
System.out.println("时间复杂度:最好,最坏,平均时间复杂度均为O(nlogn)");
System.out.println("归并排序如其名,分而治之");
break;
case 3:
InsertSort.insertSort(nums);
System.out.println("插入排序后的数组为:"+Arrays.toString(nums));
System.out.println("时间复杂度:O(n²)");
System.out.println("插入排序往前插,有序数组向后移");
break;
case 4:
BubbleSort.bubbleSort(nums);
System.out.println("冒泡排序后的数组为:"+Arrays.toString(nums));
System.out.println("时间复杂度:最好情况是O(n),平均、最坏情况是O(n²)");
System.out.println("冒泡排序换相邻,换到不换才有序");
break;
case 5:
ChoiceSort.choiceSort(nums);
System.out.println("选择排序后的数组为:"+Arrays.toString(nums));
System.out.println("时间复杂度:最好、平均、最坏情况是O(n²)");
System.out.println("选择排序最暴力,选出最值放一边(也通过交换)/每次将当前元素替换为后面最小的元素");
break;
case 6:
HeapSort.heapSort(nums);
System.out.println("选择排序后的数组为:"+Arrays.toString(nums));
System.out.println("时间复杂度:最好、平均、最坏情况都是O(nlogn)");
System.out.println("堆排序先初始堆,初始堆从第一个父亲节点开始,初始后再交换堆顶和堆尾实现排序");
break;
}
System.out.println("是否继续?输入(y/n)");
isGoOn = sc.next();
System.out.println(isGoOn);
}
}
}
Java排序算法练习:1.快速排序 2.归并排序 3.插入排序 4.冒泡排序 5.选择排序 6.堆排序
需积分: 33 54 浏览量
2022-08-08
20:33:12
上传
评论 1
收藏 14KB ZIP 举报
一不愿透露姓氏的高先生
- 粉丝: 18
- 资源: 6
最新资源
- 基于UC3842+LTS26Q1565A设计PC机充电器 硬件(原理图+PCB)工程文件.zip
- Hive SQL经典面试题,大数据SQL经典面试题
- Qt实现喷码器代码,实现二维码、条形码、图形的旋转、移动等
- 基于LM324芯片比较器传感器模块AD09设计硬件(原理图+PCB)工程文件.zip
- HTTP请求 - 记一笔-添加记账.jmx
- 2205040245凡永超硬间隔svm.ipynb
- Qt喷码器demo,演示软件,不是代码
- 目标跟踪-基于目标中心点同时进行目标检测+目标跟踪算法实现-项目源码-优质项目实战.zip
- Python《文本特征分析-全唐诗数据挖掘及分析 》+源代码
- Netron-Setup-4.5.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0