【笔记】插入排序
来源:互联网 发布:access2000数据库修复 编辑:程序博客网 时间:2024/06/18 08:00
- 直接插入排序
插入排序的算法思想:将待排序元素分为已排序子集和未排序子集,一次从未排序子集中的一个元素插入已排序子集中,使已排序自己仍然有序;重复执行以上过程,指导所有元素都有序为止。
1.直接插入排序
直接插入排序是一种最简单的插入排序算法。基本算法思想:把被排序的记录逐个取出,插在适当的位置。即进行第i遍整理时,前i-1个记录A[1],A[2],…,A[i-1],已经排序顺序;取出第i个记录A[i],在整理好的序列中为A[i]找到一个合适的位置j,即A[1],A[2],…,A[j-1]的关键字都小于或等于A[i]的关键字,而A[j],…,A[i-1]中的关键字都大于A[i]的关键字;将从j开始到位置i-1的记录全部后移一步;将原来A[i]中的数据插在A[j];于是,A[1],A[2],…,A[i]仍然是排好顺序的。
例如给定一个含有8个元素的元素,对应的关键字序列为(45,23,56,12,97,76,29,68),将这些元素按照关键字从小到大进行直接插入排序的过程如下图所示。
![这里写图片描述](http://img.blog.csdn.net/20171103004249801?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2J3ZW0=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 相应地,直接插入排序算法为:
void InsertSort(SqList *L)/*直接插入排序*/{ int i,j; DataType t; for(i=1;i<L->length;i++) /*前i个元素已经有序,从第i+1个元素开始与前i个有序的关键字比较*/ { t=L->data[i+1]; /*取出第i+1个元素,即待排序的元素*/ j=i; while(j>0&&t.key<L->data[j].key)/*寻找当前元素的合适位置*/ { L->data[j+1]=L->data[j]; j--; } L->data[j+1]=t; /*将当前元素插入合适的位置*/ }}
阅读全文
0 0
- 插入排序学习笔记
- 插入排序算法笔记
- 插入排序算法笔记
- 插入排序---学习笔记
- 【笔记】插入排序
- 【笔记】直接插入排序
- 【笔记】折半插入排序
- 【笔记】表插入排序
- 算法学习笔记----插入排序
- 算法笔记--直接插入排序
- 算法笔记二:插入排序
- 自学笔记之插入排序
- 算法学习笔记--插入排序
- 【算法导论】笔记--插入排序
- 插入排序与优化笔记
- 【笔记】2-路插入排序
- 排序学习笔记(1) - 插入排序
- 排序之直接插入排序学习笔记
- Maven-打外部jar包
- 《代码大全 》pdf下载(内附下载地址)
- Rxjava前篇(一):观察者模式之接口回调
- Matlab资料
- 稀疏矩阵的转置,求和,乘积的C/C++实现。
- 【笔记】插入排序
- Oracle学习及常见问题的解决-day01
- Python-----集合
- 【unix学习】文件处理2—文件sort、cut命令
- 【Django】WIN10安装MySQL-python时遇到403 SSL is required
- Anaconda3.4.2配置pyspark环境,win7无hadoop
- Python学习教程(五)——语句之条件与循环
- mybatis(6)---mapper动态代理方式
- Qt5编写的一个推力传感器静态性能计算程序