插入排序

想象着你的左手拿着一手好牌[1,1,1,2,6,6,6,9,9],此时你从桌面上又抽出一张牌[1],你将抽出的牌,从又往左,依次与左手的牌进行比较(只以数字进行对比),当抽出的牌第一次不再大于手中的牌,你将抽出的牌插入此牌的相邻右边,入[1,1,1,1,2,6,6,6,9,9],绿色为从右往左第一个抽出牌不再大的牌,红色为抽出的牌,这样你就回发现,虽然左手中的牌不断增加,但都将持续保持有序状态

插入排序同上方抽牌的例子相似,她将一个待排序数列分为左右两部分,并令左半部分为有序,右半部分为无序,每次从无序数列中取出一个数(无序部分最左端的一个数),并将其插入到有序数列中的合适位置(待排序数从右往左比较有序部分的元素,直到待排序数遇到第一个她不再大于的元素,此时待排序数将安置在此元素的右方),最开始,对于有序部分,其元素个数为0个,并在新元素的插入下不断增多,直到整个待排序数列有序

插入排序 - 方式一

方法将待排序数持续向左移动,直到待排序数不再大于前一个数

见图

上代码

 1     public static void insertSort(int[] arr) {
 2
 3         for (int i = 0; i < arr.length; i++) {
 4             for (int j = i; j > 0; j--) {
 5                 if(arr[j]<arr[j-1]) {
 6                     int tmp=arr[j];
 7                     arr[j]=arr[j-1];
 8                     arr[j-1]=tmp;
 9                 }
10             }
11         }
12     }

测试

    public static void main(String[] args) {Sort.insertSort(new int[] {6,10,6,8,6,8,12,15,9,6,7});}

插入排序 - 方式二

思想与上面的相同,只是方法避免了重复多次的相邻数据的交换,只在最后一步将待排序树插入到合适位置

上图

上代码

 1     public static void insertSort(int[] arr) {
 2
 3         for (int i = 0; i < arr.length; i++) {
 4             int j = i;
 5             int tmp=arr[i];
 6             for (; j > 0 && tmp<arr[j-1]; j--) {
 7                 arr[j]=arr[j-1];
 8             }
 9             arr[j]=tmp;
10         }
11     }

测试

    public static void main(String[] args) {Sort.insertSort(new int[] {6,10,6,8,6,8,12,15,9,6,7});}


如果有地方写的错误,或者有什么疑问与建议,欢迎大家提出来 愿与大家一同进步

转载于:https://www.cnblogs.com/wangbingc/p/10173098.html

java-数组排序--插入排序相关推荐

  1. java数组排序法方法_JAVA数组中五种常见排序方法

    前言: 几种常用的JAVA数组排序方法的整合. 法一:Arrays.sort() Arrays.sort()排序方法在java中是最简单且最常用的排序方法 int []arr1= {45,34,59, ...

  2. java中插入排序_Java中的插入排序

    java中插入排序 Today we will look into the Insertion Sort Java program. Insertion sort is similar to Bubb ...

  3. JAVA 实现插入排序

    JAVA 实现插入排序 代码示例: import java.util.Arrays;public class wdnmd {public static void main(String[] args) ...

  4. Java插空排序,Java直接插入排序法详解

    前面给大家介绍过了冒泡排序法.选择排序法等等,下面就来给大家讲一下java直接插入排序法,一起通过文章来进行了解吧. 来看一下基本思想: 将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组 ...

  5. java数组排序的几种方法

    因为看书看到了java数组排序,所以将常用的几种排序方法写下来,仅供参考. (1)用sort排序(从小到大) int[] arr = {5,2,66,3,7}; Arrays.sort(arr);// ...

  6. java 数组排序论文_Java 7是否对方法Arrays.Sort使用Tim Sort?

    是! ...也没有 摘要 在当前的Open JDK 0实现中,Tim Sort通常用于对对象数组(即byte和好友)进行排序-但是对于基本数组(byte方法的其余部分)使用了多种其他方法. 对于基元, ...

  7. java 数组排序论文_Java中运用数组的四种排序方法

    标签: <1>利用Arrays带有的排序方法快速排序 import java.util.Arrays; 2 public class Test2{ public static void m ...

  8. Java实现插入排序及其优化 insertion sort

    本文带来八大排序算法之插入排序. 插入排序(Insertion Sort)属于内部排序算法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的. 插入排序基本思想: 把n个待排序的元 ...

  9. Java数组排序解码

    排序是我们在计算机科学中学习的第一个算法. 排序是一个非常有趣的领域,它有大约20多种算法,而且总是很难确定哪种算法最好. 排序算法的效率是根据所需的时间和所需的空间来衡量的. 一些时间气泡排序是最好 ...

  10. Java 数组排序及元素查找

    对Java数组进行排序输出并查找任意元素所在位置下表索引值. 我们使用sort()方法对Java数组进行排序,使用binarySearch()方法来查找数组中的任意一个元素,定义一个printArra ...

最新文章

  1. Cent6.5 64位yum安装mysql5.5
  2. webpack 配置详解
  3. Firefox搜索框:自动出现添加搜索的提示
  4. js match()方法
  5. mongoose数据查询or、and、where等用法
  6. 英语总结系列(二十四):历经GCT的一月
  7. Android/Java面试题,边面试边成长,为了应试而应试
  8. python微信库wxpy无法登录_使用wxpy这个基于python实现的微信工具库的一些常见问题...
  9. virtualbox 中,虚拟机网络使用NAT方式时,其它机器对虚拟机的访问
  10. 2021-09-06Cross-product transformation
  11. TCP Reassembly
  12. oracle恢复误删除数据/数据回滚
  13. C语言二维数组传参问题
  14. oracle读取数据方式,关于oracle数据库读取数据的三种方式
  15. 学Python该看什么书?所有方向的精华好书推荐,18年老程序员倾囊相授!
  16. VMware下CentOS7最小化安装及配置
  17. 高效复制文件的DOS命令Robocopy
  18. TYPE-C接口引脚详解
  19. 游戏背景音乐与音效存在于游戏中有什么特殊的意义?
  20. 众安实业持续看好萤石矿产资源,新能源产业发展前景

热门文章

  1. 对团队成员公开感谢博客
  2. P3195 [HNOI2008]玩具装箱TOY DP+优化
  3. Unity3D教程:尽量避免使用foreach
  4. Android 通知栏用法例子
  5. SQL server 使用自定义函数以及游标
  6. Linux之time命令
  7. Oracle增量跟新
  8. (转)Eclipse4.2 Tomcat启动报错 A child container failed during start
  9. 开发者须知:关于 Android L 的一切
  10. chrome浏览器安装网页测试插件postman的图文步骤记录