插入排序 思想 JAVA实现
已知一个数组 60、28、41、39、6 、18 、14、28、49、31 利用插入排序算法进行排序
插入排序是一个运行时间为O(N²)的排序算法。
算法思想
60、28、41、39、6 、18 、14、28、49、31 数组元素
0、 1、 2、 3、 4、 5、 6、 7、 8、 9 数组下标
先将index[0]与index[1]有序,可视为index[1]为那个 插入元素
其次将index[0]、index[1]、index[2]有序,将index[2]视为 插入元素
再其次将index[0]、index[1]、index[2]、index[3]有序,将index[3]视为 插入元素
...........
插入排序始终保持数组左侧有序,将下标从左往右依次移动,使得数组依次有序。因此对于 数组在排序之前就局部有序, “插入排序的效率将会提高”会比冒泡排序更好。
以下采用java实现
public class InsertOrder {
private int[] Array;
private int index;
private int maxIndex;
public InsertOrder(int size) {
this.Array = new int[size];
this.index = 0;
this.maxIndex = size-1;
}
public void insert(int i) {
if(this.maxIndex<this.index) {
System.out.println("数组已满");
}else {
this.Array[this.index++] = i;
}
}
public void order() {
for(int i=1; i<=this.maxIndex;i++) {
int temp = this.Array[i];//插入值
int tempIndex = i;
while(tempIndex>0&&this.Array[tempIndex-1]>temp) {
this.Array[tempIndex] = this.Array[tempIndex-1];
tempIndex=tempIndex-1;
}
this.Array[tempIndex]=temp;
}
}
public void show() {
for (int i : Array) {
System.out.println(i);
}
}
}
最终结果6、14、18、28、28、31、39、41、49、60
插入排序 思想 JAVA实现的更多相关文章
- java 用插入排序思想,对不规则数组排序。
知道插入排序后,无意中发现,用插入排序思想,对不规则数组排序的排序 发现和许多大神写的不一样,大神写的简洁多了.--------
- 直接插入排序之Java实现
直接插入排序之Java实现 一.方法一 package cn.com.zfc.lesson21.sort; import java.util.Arrays; /** * * @title Insert ...
- 排序算法入门之插入排序(java实现)
插入排序思想:相当于插入元素,对于第i个元素,i之前的元素已经是有序的了,这时候将第i个元素依次与前面元素比较,插入合适的位置.
- 基本算法思想Java实现的详细代码
基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为 ...
- 33.JAVA编程思想——JAVA IO File类
33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...
- 排序系列 之 折半插入排序算法 —— Java实现
基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中 ...
- 排序系列 之 直接插入排序算法 —— Java实现
直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的 ...
- 插入排序算法java
转自https://blog.csdn.net/jianyuerensheng/article/details/51254415 1.基本思想 直接插入排序的基本操作是将一个记录插入到已经排好的有序表 ...
- Java基础(47):插入排序的Java封装(含原理,可运行,哨兵位的理解见VisualGo上面的动态分析)
直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使 ...
随机推荐
- 使用透明flash+背景图片制作绚丽页面
关键代码: <div style="width: 469px; height: 303px; background-image: url('https://images0.cnblog ...
- CentOS错误
centos下yum lock的解决办法 Another app is currently holding the yum lock; waiting for it to exit... 解决办法: ...
- How to Get Vertical Line from Point and Line
Description How to get vertical line cross one point which out of line in line. QPoint Line::Vertica ...
- 我们为什么要在 PHPStorm 中标记目录
问题来源 (1)要开发的项目位于PHPStorm打开的项目的二级目录下,使用PHPStorm来开发Laravel项目 提供的教程在代码自动定位和智能提醒方面,存在无效的情况: (2)使用gulp作为项 ...
- 13 Calculating Expected Offspring
Problem For a random variable XX taking integer values between 1 and nn, the expected value of XX is ...
- jQuery中mouseover和mouseout冒泡产生闪烁问题
问题:在jQuery中,对元素绑定mouseover和mouseout事件时,每次移入移出该元素和子元素时,都会触发事件,从而会出现闪动的现象. 原因:浏览器的冒泡行为. 解决方案: 使用mousee ...
- ADO.net开放式并发
https://docs.microsoft.com/zh-cn/dotnet/framework/data/adonet/optimistic-concurrency 在多用户环境中,有两种用于更新 ...
- (网络流)Food -- hdu -- 4292
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4292 Food Time Limit: 2000/1000 MS (Java/Others) Me ...
- [解决]--java_out: User.proto: User.proto: Cannot generate Java output because the file 's
在使用 protocol buffer 的时候,用.proto文件生成代码文件时报错 使用命令 protoc.exe --java_out c:\logs\ User.proto User.proto ...
- task4: 结对编程-词频统计[修改版]
问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...