思想:插入排序法的思想就是从数组的第二个元素开始,将数组中的每一个元素按照规则插入到已排好序的数组中以达到排序的目的。一般情况下将数组的第一个元素作为启始元素,从第二个元素开始依次插入。由于要插入到的数组是已经排好序的,所以只是要从右向左找到比插入点小(对升序而言)的第一个数组元素就插入到其后面。直到将最后一个数组元素插入到数组中,整个排序过程就算完成。换言之,就是将数组R[1...n]分成两个区域:有序区R[1...i-1]与无序区R[i...n]。初始时,R[1]自称一个有序区,则无序区为R[2...n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。

插入排序与打扑克时整理手上的牌非常类似。摸来的第1张牌无须整理,此后每次从桌上的牌(无序区)中摸最上面的1张并插入左手的牌(有序区)中正确的位置上。为了找到这个正确的位置,须自左向右(或自右向左)将摸来的牌与左手中已有的牌逐一比较。

下面是插入排序法的java实现代码:

public static void main(String[] args) {

// 模拟按照升序(由小到大)进行排序

int[] nums = { 25, 13, 39, 20, 55, 46 };

int len = nums.length;

for (int i = 1; i < len; i++) {

int temp = nums[i];

int j = i - 1;

for (; j >= 0 && temp < nums[j]; j--) {

nums[j + 1] = nums[j];

}

nums[j + 1] = temp;

}

}

java插入法排序_java算法之插入排序法相关推荐

  1. java递推_Java算法-递推算法思想

    递推算法是常用的算法思想,在数学计算等方面有着广泛的应用.递推算法适合有着明显公式的规律场合. 一.递推算法基本思想 递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果.递推 ...

  2. java插入法排序_java如何用插入法对数组排序(GUI窗口实现)

    3.数据获取: 该部分的代码用来获取窗口输入的数据,将窗口文本框中的字符串编程数组,具体代码如下: public void getArray() { String arrayStr = jta_in. ...

  3. java 性能 排序_Java常用排序算法及性能测试集合

    package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...

  4. java基础排序_Java排序算法-Java入门|Java基础课程

    1. 课程目标排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2 ...

  5. 排序算法(一)--插入排序法折半插入排序法

    约定: 假设数据中有n个数据元素(关键字).排列算法中,将序列中各关键字值依次存放于类型为keytype的数组元素K[1], K[2], K[3], -, K[n]中. 排序结果按照数据元素(关键字) ...

  6. 排序算法之插入排序法

    无论是C语言相关书籍还是算法等等,很多种书籍上都有介绍排序算法,而排序算法重要的在于它的思想,这也是一个程序的灵魂,相信大家也早都知道.在此,我简单介绍一下插入排序法的基本思想,以供一些初学者及掌握不 ...

  7. 插入法排序c语言程序,插入排序算法及C语言实现

    插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据. 直接插入排序是插入排序算法中的一种,采用的方法是: ...

  8. java util 排序_Java中常见的排序方法

    本博主要介绍Java中几种常见的排序算法: /* 排序方法的演示 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分 ...

  9. java 8 排序_Java 八大排序实现

    参考链接 本文只给出算法的Java实现版本,具体原理参考:八大排序算法. 公用代码 下面的swap()函数,是排序算法中经常用到的,单独贴出来. public void swap(int[] a, i ...

最新文章

  1. 年薪百万的华为「天才少年」:谢凌曦分享「进阶」之路,选题最重要!
  2. 自然语言处理起源:马尔科夫和香农的语言建模实验
  3. 模拟IE登录一个需要(windows身份)验证的网站
  4. Android UI(三)SlidingMenu实现滑动菜单(详细 官方)
  5. carsim学习笔记1—界面工具的含义
  6. spring之二——使用maven创建一个java project
  7. MailMail正式发布!注册码免费发放活动开启!(已结束~~不要再回复咧~)
  8. html5 canvas 绘制圆角矩形
  9. UltraWebGrid两种显示样式
  10. 惠普z800工作站bios设置_HP工作站BIOS说明书适用Z228Z440Z230Z640Z840Z800Z620Z420Z820主板设置.doc...
  11. 浙江工业大学python试卷_20浙江工业大学计算机专硕考研经验贴
  12. Recoil 的使用
  13. Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...'
  14. UCI机器学习数据库使用说明
  15. 极路由 支持php,目前极路由4增强版(B70)可用的最新固件整理!Padavan_PandoraBox_灯大_hanwckf_H大...
  16. C语言复数运算(结构体)
  17. 什么人不在生死簿_高人亲眼所见的“地狱、生死簿、三世因果”(转)阴间一直是世...
  18. C语言中atof函数功能及用法
  19. 写给想加入淘宝的在校同学--广州实习生招聘感想
  20. 计算机图形学课程设计html源码,孔令德的计算机图形学实验及课程设计(VC++版)...

热门文章

  1. Storm实践2-【storm实时排序TopN】 - TOP10
  2. Vmware Update Manager安装错误,错误代码:25085
  3. BS 百度Blog的字节限制!!!!!!!!!
  4. Linux 命令(40)—— nohup 命令
  5. replaceFirst、replaceAll、replace区别
  6. centos7 + python 2.7 + pip + openvswitch 杂项问题
  7. mysql查找数据库中是否已经存在某张表
  8. 不越狱 继续逆向 微信运动
  9. 6.ZigZag Conversion
  10. FreeDroid开发过程中遇到的一些问题