经典算法排序——插入排序
插入排序是这样的,一个无需的数组,依次插入到另外一个有序的数组,在插入中排序。
算法描述:
⒈ 从第一个元素开始,该元素可以认为已经被排序
⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
⒋ 重复步骤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
经典算法排序——插入排序相关推荐
- JS的十大经典算法排序
更正(2018/5/31):如果看的是原文章的话,注意希尔排序少一个等号,在本博中,我已经添加上了,希尔排序(更正后)及以前的经测试都是正确的,后面的我正找时间持续研究验证中--(过程可能有点慢) 更 ...
- 折半插入排序稳定吗_C++实现经典算法--折半插入排序
本节用c++实现经典的折半插入排序,也是王道上总结得插入排序的第二种算法,思路很清晰,首先将用户输入保存在数组中,然后从数组第二个元素开始遍历整个序列,每次将元素跟其左边邻居元素比较,如果出现小于其邻 ...
- 插入排序c语言_玩扑克牌中插扑克牌手法就是不一样,C语言经典算法之插入排序...
插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂.当然,如果你说你打扑克牌摸牌的时候从来不按牌的大小整理牌,那估 ...
- 九大经典算法之插入排序、希尔排序
01 插入排序(Insertion Sort) 原理:每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置. void insertion_sort(int arr[] ...
- 十大经典算法排序总结对比
1.冒泡排序JavaScript代码实现: function bubbleSort(arr) {var len = arr.length;for (var i = 0; i < len; i++ ...
- 算法-排序-插入排序
插入排序 特点:原址排序,比较排序,(最坏的情况)时间复杂度O(n^2) #include <iostream>void insertion_sort(int *arr,int start ...
- 经典算法——直接插入排序
文章目录 1. 算法的定义 2. 直接插入排序 3. 代码实现 4. 算法效率 4.1 时间复杂度 4.2 空间复杂度 1. 算法的定义 任何被明确定义的计算过程都可以称作 算法 ,它将某个值或一组值 ...
- java架构师进阶之独孤九剑(一)-算法思想与经典算法
" 这是整个架构师连载系列,分为9大步骤,我们现在还在第一个步骤:程序设计和开发->数据结构与算法. 我们今天讲解重点讲解算法. 算法思想 1 贪心思想 顾名思义,贪心算法总是作出在当 ...
- 经典排序算法之插入排序
前言 前面我们已经学习了经典排序算法之一的冒泡排序.那么除了经典的冒泡排序还有很多其他的排序算法,今天我们就来学习一个新的排序 - 插入排序. 从名字上看不难理解,其实就是以插入的方式进行排序,在讲数 ...
最新文章
- 【UGV】小车一些图片
- 聊一聊Kafka分区的隐藏属性——二次归类
- 编写程序模拟“主人”喂养“宠物”的场景,利用多态的思想!!!
- iscroll.js 下拉刷新和上拉加载
- siteweaver android动易客户端,动易SiteWeaver内容管理系统WAP2.0适配程序
- vb.net使用DirectX入门知识
- 两场直播丨易鲸捷分布式数据库的并发控制 、PostgreSQL日常工作分享
- flash cs6汉化成中文,附汉化包
- VLAN与trunk配置 实验 思科模拟器Cisco
- 通感一体化学习笔记(1)——匹配滤波与脉冲压缩
- 程序媛学车之——科目二流程
- 幸运数的定义及其判断
- 什么是用计算机的主存,计算机的主存储器是指什么
- mysql下载完安装包怎么办_MySQL下载压缩包安装详细过程
- android shortcut 快捷键 相关问题记录
- 直线模组常用的驱动模式有哪些?
- unity 虚线 无视透视 近大远小
- 外卖匹配系统_外卖平台派单规则浅析
- 安装cmake 3.6
- python open找不到文件的原因_浅谈python 调用open()打开文件时路径出错的原因