算法导论1插入排序
2014-04-17 11:37
155 查看
算法导论中第一个算法就是插入排序,插入排序的思路也是很简单,如果叫没有接触过算法的人设计一个排序程序,估计大多数想出来的就是插入排序.
插入排序的数据结构是数组
最差时间复杂度是O(n^2):逆序的,设元素位置为m每个元素需要比较m-1次,总共需要比较2+3+…+(n-1)+n=(n+1)*n/2-1次
最优时间复杂度是O(n):已经拍好序的,每个元素只须比较一次,即比较n次即可
插入排序的原理(以升序为例):
从第2个元素开始比较.
设数组为A,设元素的位置为m,先定义一个变量t等于A[m],依次和m前面的元素比较,如果t大于被比较的元素,则被比较的元素后移一位.t在继续和前面的比较,直到t大于等于被计较的元素,则停止比较,t值赋到这个元素后面.
C代码如下.
测试程序
#include <iostream>
void main()
{
int a[]={1,6,53,8,9,186,2,3,32,5};
InsertSort(a,10);
for(int i=0;i<10;i++)
{
std::cout<<a[i]<<std::endl;
}
}
插入排序的数据结构是数组
最差时间复杂度是O(n^2):逆序的,设元素位置为m每个元素需要比较m-1次,总共需要比较2+3+…+(n-1)+n=(n+1)*n/2-1次
最优时间复杂度是O(n):已经拍好序的,每个元素只须比较一次,即比较n次即可
插入排序的原理(以升序为例):
从第2个元素开始比较.
设数组为A,设元素的位置为m,先定义一个变量t等于A[m],依次和m前面的元素比较,如果t大于被比较的元素,则被比较的元素后移一位.t在继续和前面的比较,直到t大于等于被计较的元素,则停止比较,t值赋到这个元素后面.
C代码如下.
void InsertSort(int *Array,int len) { if(Array!=0x0) { for(int i=1;i0&&(t
测试程序
#include <iostream>
void main()
{
int a[]={1,6,53,8,9,186,2,3,32,5};
InsertSort(a,10);
for(int i=0;i<10;i++)
{
std::cout<<a[i]<<std::endl;
}
}
相关文章推荐
- 动画状态机(2)
- adb问题
- openWRT自学计划安排
- adb问题
- 测试网站是共享还是独立ip
- js调用后台、后台调用前台等方法总结
- Erb 文件里,我将<% %>写入了 Javascript 的 function 里,为什么仍旧被执行?
- Android 代码中添加RelativeLayout布局
- 一小时搞定DIV+CSS布局-固定页面开度布局
- 解决非浏览器客户端请求nginx无法命中缓存的问题
- 《Java解惑》系列——01表达式之谜——谜题08:Dos Equis
- redmine如何安装配置svn及邮件
- Android 4.4 AMS 学习笔记(一)
- Ubuntu 12.04 64bit 无法安装ia32-libs 解决方法
- 移除SharePoint2013里的NoteBook笔记本链接
- my sql 实现批量操作及注意问题
- 动画状态机(1)
- 怎么使网站的在baidu中每天快照?
- windows编程之自订资源
- 在具有共享存储的xen Server上实现共享VM的启动