插入排序

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

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

插入排序 - 方式一

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

见图

上代码

     public static void insertSort(int[] arr) {

         for (int i = 0; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if(arr[j]<arr[j-1]) {
int tmp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=tmp;
}
}
}
}

测试

    public static void main(String[] args) {

        Sort.insertSort(new int[] {6,10,6,8,6,8,12,15,9,6,7});

    }

插入排序 - 方式二

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

上图

上代码

     public static void insertSort(int[] arr) {

         for (int i = 0; i < arr.length; i++) {
int j = i;
int tmp=arr[i];
for (; j > 0 && tmp<arr[j-1]; j--) {
arr[j]=arr[j-1];
}
arr[j]=tmp;
}
}

测试

    public static void main(String[] args) {

        Sort.insertSort(new int[] {6,10,6,8,6,8,12,15,9,6,7});

    }


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

java-数组排序--插入排序的更多相关文章

  1. java 数组排序 插入排序法

    插入排序法思想:将n个数字分为前面几个是有序数字集合,后面几个为无序集合.当然尚未排序之前,可以将n0 看为有序数集合,N1-Nn-1 看为等待排序的无序集合.从N1开始将无序数一个一个插入到有序数集 ...

  2. Java数组排序

    Java数组排序Arrays.sort,以及Comparator接口的用法 有的时候需要对数组里的element进行排序.当然可以自己编写合适的排序方法,但既然java包里有自带的Arrays.sor ...

  3. java 用插入排序思想,对不规则数组排序。

    知道插入排序后,无意中发现,用插入排序思想,对不规则数组排序的排序 发现和许多大神写的不一样,大神写的简洁多了.--------

  4. [Java]数组排序-选择排序 冒泡排序 插入排序

    1 选择排序  原理:a 将数组中的每个元素,与第一个元素比较          如果这个元素小于第一个元素, 就将这个         两个元素交换.       b 每轮使用a的规则, 可以选择出 ...

  5. java数组排序(插入排序、冒泡排序、选择排序)与递归 代码示例

    import java.util.Scanner; public class OrderBy { public static void main(String[] args) { // Scanner ...

  6. Java温故而知新-插入排序

    插入排序 插入排序的基本思想是将待排序的元素依次插入序列合适的位置,然后将这个位置后面的元素依次向后移动一位 位置1 2 3 4 5 6 序列5 4 2 1 8 3 设第1位为最初始的基础元素,也就是 ...

  7. 疯狂的Java算法——插入排序,归并排序以及并行归并排序

    从古至今的难题 在IT届有一道百算不厌其烦的题,俗称排序.不管是你参加BAT等高端笔试,亦或是藏匿于街头小巷的草根笔试,都会经常见到这样一道百年难得一解的问题. 今天LZ有幸与各位分享一下算法届的草根 ...

  8. JAVA排序--[插入排序]

    package com.array; public class Sort_Insert { /* * 项目名称:插入排序 ; * 项目要求:用JAVA对数组进行排序,并运用插入排序算法; * 作者:S ...

  9. Java直接插入排序

    插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法步骤: 1)将第一待排序序列第一个元素看做一个有序序列,把第二 ...

  10. 【Java SE】如何用Java实现插入排序

    摘要:前面三期分别写了三篇简单排序的算法,今天来讲一点稍微难一点的排序算法-----插入排序. 基本思想: 设n个数据已经按照顺序排列好(假定从小排到大). 输入一个数据x,将其放在恰当的位置,使其顺 ...

随机推荐

  1. Day054--MySQL, 创建用户和授权, 数据类型, 枚举和集合, 约束,唯一, 主键,外键

    创建用户和授权 1.创建用户: # 指定ip:192.118.1.1的mjj用户登录 create user 'mjj'@'192.118.1.1' identified by '123'; # 指定 ...

  2. Chart控件,鼠标选择区域,可以局部放大缩小

    例子: 代码设置部分: chartArea1.CursorX.Interval = 0D; chartArea1.CursorX.IntervalOffsetType = System.Windows ...

  3. UVA - 11427 Expect the Expected (概率dp)

    Some mathematical background. This problem asks you to compute the expected value of a random variab ...

  4. ORACLE创建表空间 新建用户 授权

    --建表空间create tablespace <用户> datafile 'D:\oradatadev\<用户>.dbf' size 200mautoextend on ne ...

  5. Python的安装与小程序的编写

    Python的安装 在此之前,我完全不了解Python,为了完成任务,在慌忙之中了解了一下Python,通过百度,一步步安装好Python 过程 1.从官网中找到下载菜单并下载最新版本 2.双击pyt ...

  6. SQL随记(五)——函数篇

    1.SQL函数: (1)replace(String1,String2,String3):从String1字符串中找到String2,然后用String3替换String2 如:replace('ab ...

  7. Jenkins-在windows上配置自动化部署(Jenkins+Gitblit)

    Jenkins-在windows上配置自动化部署(Jenkins+Gitblit) 1. 安装好 Jenkins(注:安装目录需没有空格,否则安装gitlab hook 插件时会报错,安装在c盘跟目录 ...

  8. (Python3) 求中位数 代码

    def zhongweishu(a): new=sorted(a) if len(a)%2==0: s=(new[int(len(a)/2-1)]+new[int(len(a)/2)])/2 else ...

  9. Ireport5.0.1 从java后台接收list集合

    作为ireport新手,开始使用时总有很多问题,说一下今天解决的一个问题,就是怎样从java后台接收list集合并显示出列表. 1.首先要在主dataset中的Paramerters 中创建参数lis ...

  10. 移动开发常用head部分

    <!--[viewport] 设置布局viewport的各种信息: width=device-width:布局viewport宽度等于设备宽度 initial-scale=1.0:默认缩放比为1 ...