插入排序之java实现
来源:互联网 发布:js 上传文件 前台实现 编辑:程序博客网 时间:2024/06/05 14:40
(建议在学习排序算法的同时,顺便练习对数组数据的输入:本博客中冒泡排序、优化版、选择排序(给定数组数据)。插入排序、希尔排序(键盘输入数据)。快速排序(电脑自动以随机数的形式输入数据))
插入排序:将待插入的数据与已排序好的数据作比较,插入适当的位置。
特点:
1、需比较(n-1)(n-2)+...+3+2+1=n(n-1)/2次,时间复杂度为O(n^2);如果本身就已排序完成的数据,只需比较n-1次即可,时间复杂度为O(n)。2、是稳定排序法。
3、只需一个额外空间,空间复杂度为O(1)。
4、适用于大部分数据已经过排序或已排序数据库新增数据后进行排序的情况。
5、插入排序会造成数据的大量迁移,建议在链表上使用。
核心代码:
public void insert() {//要进行length-1次插入for(int i = 1; i < arr.length; i++) {//用temp来记录插入的元素int temp = arr[i];//用j来标记与之比较的元素int j = i-1;//如果插入的元素比与之比较的元素小while(j>=0 && temp<arr[j]) {//把比插入元素大的元素向后移一个位置arr[j+1] = arr[j];j--;}//将插入元素放到元素后移造成的空余位置arr[j+1] = temp;System.out.print("第"+i+"次排序后的数组:");showarr();}}
完整代码:
public class InsertSort{int arr[] = new int[4];public static void main(String[] args) {InsertSort is = new InsertSort();//输入数组数据is.inputarr();System.out.print("输入数组为:");//打印输入的数组is.showarr();//进行插入排序is.insert();System.out.print("完成排序后的数组为:");//打印排序好的数组is.showarr();}public void inputarr() {for(int i = 0; i < arr.length; i++) {try{System.out.print("请输入第"+(i+1)+"个元素:");InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);arr[i] = Integer.parseInt(br.readLine());}catch(Exception e) { }}}public void showarr() {for(int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();}public void insert() {//要进行length-1次插入for(int i = 1; i < arr.length; i++) {//用temp来记录插入的元素int temp = arr[i];//用j来标记与之比较的元素int j = i-1;//如果插入的元素比与之比较的元素小while(j>=0 && temp<arr[j]) {//把比插入元素大的元素向后移一个位置arr[j+1] = arr[j];j--;}//将插入元素放到元素后移造成的空余位置arr[j+1] = temp;System.out.print("第"+i+"次排序后的数组:");showarr();}}}
(注意导入IO)
输入的数据以及程序运行结果:
请输入第1个元素:4
请输入第2个元素:3
请输入第3个元素:2
请输入第4个元素:1
输入数组为:4 3 2 1
第1次排序后的数组:3 4 2 1
第2次排序后的数组:2 3 4 1
第3次排序后的数组:1 2 3 4
完成排序后的数组为:1 2 3 4
转载请标明出处,原文地址:http://blog.csdn.net/qq_35383263/article/details/60469958
0 0
- 插入排序之java实现
- 插入排序之Java实现
- 插入排序之折半排序Java实现
- java数据结构排序之插入排序实现
- Java实现插入排序之希尔排序
- 排序算法之插入排序 Java实现
- java实现排序算法之插入排序(直接插入排序,折半插入排序,希尔排序)
- 插入排序之直接插入排序Java实现
- 插入排序之直接插入排序算法-java实现
- Java实现插入排序之直接插入排序
- java实现排序算法之2-路插入排序,直接插入排序,折半插入排序
- 插入排序(Insertsort)之Java实现
- 插入排序(Insertsort)之Java实现
- 算法学习之java实现插入排序
- 数据结构之插入排序的Java实现
- 直接插入排序之Java实现
- 数据结构之二分插入排序------java实现
- 算法实现Java之插入排序
- 四种参数传递的形式
- JavaScript 自定义文本框光标——初级版
- 测鬼记(上)——写在前面
- springmvc文件上传,上传图片存储到tomcat虚拟图片服务器
- Itop4412开发板emmc驱动移植(设备树)
- 插入排序之java实现
- 练习
- python字符串格式化
- 测鬼记(上)——离乡(一)
- 利用一个栈倒序另外一个栈中的数
- 生日蜡烛
- Synchronized 原理
- unique的用法
- Structured Streaming Programming Guide官方文档再次阅读理解强化学习