博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入排序
阅读量:5092 次
发布时间:2019-06-13

本文共 1146 字,大约阅读时间需要 3 分钟。

插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 把一个数据插入到有序序列中使之仍然有序,但是有序序列长度逐渐增长, 第一次把第一个数当有序 序列 ,拿出第二个数 插入 以此类推 概括为挖坑-逆序比较-后移-填坑 开始,i=1,j=0,temp=a[i],把a[0]当成第一个长度为1的有序序列,取出待插入数(a[1]从第二个开始)放到一边去(存到temp中),也就挖了一个坑出来,开始从后往前与temp比较 大于temp ,a[j]后移(此时坑位也向前移动了一个位置)记录坑位,再与j前面的j-1比较,直至j=0或temp>a[j]为止,将temp插入填坑 关键字 : 挖坑 - 倒序比较-后移-记录坑位置-填坑 代码思路 先把第一个数当成  一个长度为1的有序序列,取出第二个数,现在空位是位置2,然后从后往前开始比较,若取出来的数小于被比较数则被比较数后移,然后被比较熟换成它前面的一个数继续比较 //1确定插入位置,  2后移,    class insertOrder:order    {        private int[] a;        private int Local = 0; //记录插入位置        private int temp = 0,i=0,j=0;        public insertOrder(int[] b)        {            a = b;        }        public int[] orderBy()        {            for (i = 1; i < a.Length;i++ )            {                temp = a[i]; //把a[i] 取出来, 从第二个记录开始                               for ( j = i-1 ; j >= 0 && (temp < a[j]); j--)                {                        a[j + 1] = a[j];//后移                        Local = j;//记录需要插入位置,记录坑位                }                a[Local] = temp;//插入            }            return a;        }    }

 

转载于:https://www.cnblogs.com/wangjian920110/p/5436596.html

你可能感兴趣的文章
JQuery canvas 验证码
查看>>
mips32和x86下的大小端模式判定
查看>>
利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
查看>>
blender 用户界面基本构成
查看>>
bzoj 3561: DZY Loves Math VI
查看>>
Intel Edison学习笔记(一)—— 刷系统
查看>>
nginx跨域配置
查看>>
完整且易读的微信小程序的注册页面(包含倒计时验证码、获取用户信息)
查看>>
跟bWAPP学WEB安全(PHP代码)--SSL(Server-Side-Include)漏洞
查看>>
260. Single Number III
查看>>
easyUI 之datagrid 在前端自定义排序
查看>>
SQLite数据库管理的相关命令
查看>>
POJ1177(扫描线求周长并)
查看>>
River Problem HDU - 3947(公式建边)
查看>>
customErrors与错误页面
查看>>
Codeforces 439E Devu and Birthday Celebration 容斥
查看>>
Codeforces 758F Geometrical Progression
查看>>
Codeforces 1009G Allowed Letters 最大流转最小割 sosdp
查看>>
Codeforces 1174E Ehab and the Expected GCD Problem
查看>>
Http协议对格式、请求头、方法
查看>>