排序3——插入排序及优化
来源:互联网 发布:java解析log日志文件 编辑:程序博客网 时间:2024/05/17 06:11
三、选择排序
1、未经优化的选择排序:
import java.util.Scanner;public class Test{//定义数组的最大长度static final int num=100;//插入排序(升序)public static void InsertSort(int[] arr,int length){for(int i=2;i<=length;i++){//监视哨备份待查记录arr[0]=arr[i];int j;for(j=i-1;arr[0]<arr[j];j--){//记录后移arr[j+1]=arr[j];}//将哨兵插入到正确的位置arr[j+1]=arr[0];}}public static void main(String[] args) {int[] arr=new int[num];Scanner in=new Scanner(System.in);System.out.println("请输入数组中的元素个数(<=100):");int length=in.nextInt();System.out.println("输入数组中的元素:");for(int i=1;i<=length;i++){arr[i]=in.nextInt();}//调用排序方法对数组进行排序InsertSort(arr, length);System.out.println("排序后的数组:");for(int i=1;i<=length;i++){System.out.print(arr[i]+" ");}}}
运行结果:
请输入数组中的元素个数(<=100):
10
输入数组中的元素:
23 34 56 76 33 11 22 33 55 77
排序后的数组:
11 22 23 33 33 34 55 56 76 77
分析此段算法可以发现,在最后一趟过程中,77已经是当前最大的记录关键字,不需要进行该趟排序。
下面改进上面的算法。
2、优化后的插入排序:
import java.util.Scanner;public class Test{//定义数组的最大长度static final int num=100;//插入排序(升序)public static void InsertSort(int[] arr,int length){for(int i=2;i<=length;i++){//在该位置进行判断,看是否需要进行比较if(arr[i]<arr[i-1]){//监视哨备份待查记录arr[0]=arr[i];int j;for(j=i-1;arr[0]<arr[j];j--){//记录后移arr[j+1]=arr[j];}//将哨兵插入到正确的位置arr[j+1]=arr[0];}}}public static void main(String[] args) {int[] arr=new int[num];Scanner in=new Scanner(System.in);System.out.println("请输入数组中的元素个数(<=100):");int length=in.nextInt();System.out.println("输入数组中的元素:");for(int i=1;i<=length;i++){arr[i]=in.nextInt();}//调用排序方法对数组进行排序InsertSort(arr, length);System.out.println("排序后的数组:");for(int i=1;i<=length;i++){System.out.print(arr[i]+" ");}}}
时间复杂度:O(n^2)
稳定性:稳定
阅读全文
0 0
- 排序3——插入排序及优化
- 插入排序及优化
- 插入排序及优化
- 插入排序分析及优化
- 关于插入排序及优化
- 插入排序与归并排序及优化
- 排序(2)——插入/希尔/选择/快速排序及优化
- 插入排序及2种优化
- 插入排序及优化(java实现)
- 排序算法3——插入排序
- 排序(3)——插入排序
- 【手写排序算法及优化】直接插入排序
- 插入排序,选择,冒泡,快速排序算法及优化
- 排序算法(三)——插入排序及改进
- 排序算法(三)——插入排序及改进
- 排序算法(三)——插入排序及改进
- 插入排序&希尔排序—思路及实现
- 排序——插入排序
- python浅拷贝和深拷贝 copy()和deepcopy()
- kotlin 基本语法(一)
- request获取路径
- 线程状态
- WebLogic下部署war包
- 排序3——插入排序及优化
- 实现一个随手指移动而滑动的效果---爬坑
- 金典——叠罗汉2
- C++ STL pair
- 自定义View 之 ImageView(一) 自定义圆形ImageView
- 端口分类
- 操作系统镜像文件ucore.img是如何一步一步生成的
- 《小白兔到大黑牛》第三篇冒泡排序实现
- 机器学习之决策树