直接插入排序
来源:互联网 发布:每周eia数据时间 编辑:程序博客网 时间:2024/06/07 12:57
直接插入排序时间复杂度为O(n^2),空间复杂度为O(1),是一种稳定的排序方法。当序列中的记录基本有序或待排序记录较少时,直接插入排序是最佳的排序方法。但当待排序的记录个数较少时,大量的比较和移动操作是直接插入排序算法的效率降低。
基本思想:把记录分为有序区和无序区,开始时有序区为a[0],无序区为a[1,2,3...n-1],然后无序区里的记录依次插入到有序区。
//直接插入排序#include<iostream>using namespace std;void DirectInsertSort(int a[],int n){ int i; for (i = 1; i <n; i++) //无序区{if(a[i]<a[i-1]){//亮点,先于有序区的最大值比较,如果大于此值,此次循环不需要做插入操作,避免不必要的比较int temp=a[i];//temp作为待插入记录的暂存单元和查找记录的插入位置过程中的“哨兵”for(int j=i-1;temp<a[j];j--) a[j+1]=a[j];a[j+1]=temp;}}} void main(){int a[6]={2,9,1,6,3,8};DirectInsertSort(a,6);for(int i=0;i<6;i++)cout<<a[i]<<" ";cout<<endl;}
运行结果如下:
0 0
- 插入排序--直接插入
- 插入排序------直接插入
- 插入排序---直接插入
- 排序:直接插入排序
- 排序---直接插入排序
- 排序 -- 直接插入排序
- 排序---直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序:直接插入排序
- 【排序】直接插入排序
- 排序--直接插入排序
- 排序--直接插入排序
- 排序-直接插入排序
- 插入排序--直接插入排序
- 插入排序-直接插入排序
- LeetCode解题报告--Container With Most Water
- Laravel SoapClient
- Spring MVC 之@RequestBody,@ResponseBody详解
- redis常用命令
- django 显示静态文件的几种方式
- 直接插入排序
- win7无法访问虚拟机中的hadoop2.x的web管理界面
- ubuntu14.10配置静态IP中所遇到的DNS问题
- 黑马程序员--Java基础--多线程(二)
- ios中json解析出现的null问题
- 斯坦福ML公开课笔记10——VC维、模型选择、特征选择
- css3 pointer-events: none;
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- VS 2008的64位编译环境的安装和使用