插入排序是这样的,一个无需的数组,依次插入到另外一个有序的数组,在插入中排序。

算法描述:

⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⒌ 将新元素插入到下一位置中
⒍ 重复步骤2

代码实现:

public class Sort {static final int MAX = 20;public static void main(String[] args) {int[] data = new int[MAX];Random random = new Random();// 生成一个随机数组for (int i = 0; i < MAX; i++) {data[i] = random.nextInt(MAX * MAX);}// 打印排序前数据内容System.out.println(Arrays.toString(data));// 一个已经排序好的数组int[] data2 = new int[MAX];// 原始数组第一个值赋值data2[0] = data[0];for (int i = 1; i < MAX; i++) {int temp = data[i];int j = i;// 依次从后到前查找,并且移动数组中内容,到下一个位置while (j > 0 && data2[j - 1] > temp) {data2[j] = data2[j - 1];j--;}// 找到合适的位置插入,如果没有则在第一个位置data2[j] = temp;}// 打印排序后的数组System.out.println(Arrays.toString(data2));}
}

转载于:https://www.cnblogs.com/liushuibufu/archive/2013/06/07/3253621.html

经典算法排序——插入排序相关推荐

  1. JS的十大经典算法排序

    更正(2018/5/31):如果看的是原文章的话,注意希尔排序少一个等号,在本博中,我已经添加上了,希尔排序(更正后)及以前的经测试都是正确的,后面的我正找时间持续研究验证中--(过程可能有点慢) 更 ...

  2. 折半插入排序稳定吗_C++实现经典算法--折半插入排序

    本节用c++实现经典的折半插入排序,也是王道上总结得插入排序的第二种算法,思路很清晰,首先将用户输入保存在数组中,然后从数组第二个元素开始遍历整个序列,每次将元素跟其左边邻居元素比较,如果出现小于其邻 ...

  3. 插入排序c语言_玩扑克牌中插扑克牌手法就是不一样,C语言经典算法之插入排序...

    插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂.当然,如果你说你打扑克牌摸牌的时候从来不按牌的大小整理牌,那估 ...

  4. 九大经典算法之插入排序、希尔排序

    01 插入排序(Insertion Sort) 原理:每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置. void insertion_sort(int arr[] ...

  5. 十大经典算法排序总结对比

    1.冒泡排序JavaScript代码实现: function bubbleSort(arr) {var len = arr.length;for (var i = 0; i < len; i++ ...

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

    插入排序 特点:原址排序,比较排序,(最坏的情况)时间复杂度O(n^2) #include <iostream>void insertion_sort(int *arr,int start ...

  7. 经典算法——直接插入排序

    文章目录 1. 算法的定义 2. 直接插入排序 3. 代码实现 4. 算法效率 4.1 时间复杂度 4.2 空间复杂度 1. 算法的定义 任何被明确定义的计算过程都可以称作 算法 ,它将某个值或一组值 ...

  8. java架构师进阶之独孤九剑(一)-算法思想与经典算法

    " 这是整个架构师连载系列,分为9大步骤,我们现在还在第一个步骤:程序设计和开发->数据结构与算法. 我们今天讲解重点讲解算法. 算法思想 1 贪心思想 顾名思义,贪心算法总是作出在当 ...

  9. 经典排序算法之插入排序

    前言 前面我们已经学习了经典排序算法之一的冒泡排序.那么除了经典的冒泡排序还有很多其他的排序算法,今天我们就来学习一个新的排序 - 插入排序. 从名字上看不难理解,其实就是以插入的方式进行排序,在讲数 ...

最新文章

  1. 【UGV】小车一些图片
  2. 聊一聊Kafka分区的隐藏属性——二次归类
  3. 编写程序模拟“主人”喂养“宠物”的场景,利用多态的思想!!!
  4. iscroll.js 下拉刷新和上拉加载
  5. siteweaver android动易客户端,动易SiteWeaver内容管理系统WAP2.0适配程序
  6. vb.net使用DirectX入门知识
  7. 两场直播丨易鲸捷分布式数据库的并发控制 、PostgreSQL日常工作分享
  8. flash cs6汉化成中文,附汉化包
  9. VLAN与trunk配置 实验 思科模拟器Cisco
  10. 通感一体化学习笔记(1)——匹配滤波与脉冲压缩
  11. 程序媛学车之——科目二流程
  12. 幸运数的定义及其判断
  13. 什么是用计算机的主存,计算机的主存储器是指什么
  14. mysql下载完安装包怎么办_MySQL下载压缩包安装详细过程
  15. android shortcut 快捷键 相关问题记录
  16. 直线模组常用的驱动模式有哪些?
  17. unity 虚线 无视透视 近大远小
  18. 外卖匹配系统_外卖平台派单规则浅析
  19. 安装cmake 3.6
  20. python open找不到文件的原因_浅谈python 调用open()打开文件时路径出错的原因

热门文章

  1. ARM 指令集跳转指令
  2. LeetCode(876)——链表的中间结点(JavaScript)
  3. Software Project Management之EVM问题的求解
  4. 你们喜欢一个人旅行,还是有人陪伴旅行?
  5. 你三十岁有什么巨大变化吗?
  6. 每天走6000步,血糖真的可以恢复正常吗?
  7. 现在为什么没有人再提“以厂为家”这样的词语啦?
  8. 未来的经销商还有哪些生意能做?
  9. 刚有个做电商的朋友在说,他们想在网上造出品牌销量很容易
  10. 找不到合适的创业路该怎么办