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

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

  • 思想

插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

  • 图解

在这里插入图片描述

先将第一个元素看作是有序的,比如5,然后从后边无序的序列中取出一个2与之对比,2小于5,交换位置,形成有序序列 2 5,从无序序列中取出4与有序序列对比,大于 2 小于 5,插入2和5之间,形成新的有序序列,再从无序序列中取出6,插入有序序列 2 4 5,形成有序序列 2 4 5 6,从无序序列中取出1,插入有序序列形成 2 3 4 5 6,最后从无序序列中取出 1,插入有序序列形成 1 2 3 4 5 6 有序序列。

  • 代码
void InsertSort(int* a, int n){
// 控制end的位置从0走到n-2 for (int i = 0; i < n - 1; ++i) {
// 单趟排序 // 在[0,end]区间中插入tmp,依旧有序 int end = i; int tmp = a[end + 1]; while (end >= 0) {
if (a[end] > tmp) {
a[end + 1] = a[end]; --end; } else {
break; } } a[end + 1] = tmp; }}

转载地址:http://lqwzi.baihongyu.com/

你可能感兴趣的文章
linux下串口编程
查看>>
boot asio 非阻塞同步编程---非阻塞的accept和receive。
查看>>
利用ADOX、ADO操纵MDB文件(ACCESS)
查看>>
使用ADO操作MDB,关注数据类型
查看>>
使用windows自带Zip命令压缩文件
查看>>
windows获得文件大小
查看>>
Host 'ETCV3' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
查看>>
OCILIB在VS2008中的使用
查看>>
OCILIB VC2008 效率测试
查看>>
PL/SQL设置NUMBER显示为字符串
查看>>
linux ftp 脚本 -- 使用程序执行脚本
查看>>
MFC CListBox的使用
查看>>
VS2008向MFC 对话框 添加托盘图标(显示和消失)
查看>>
redhat中vsftp开机自启动
查看>>
MySQL存储过程,生成大量数据
查看>>
查询字段值出现多次的字段值
查看>>
SQL Server表存在则进行查重 SQL语句
查看>>
redhat 9 下sqlite 3的安装及编程
查看>>
两个同步表的字段复制.Oracle.
查看>>
windows MySQL 报“Got a packet bigger than 'max_allowed_packet' bytes”错误,解决过程.
查看>>