算法导论1插入排序

算法导论中第一个算法就是插入排序,插入排序的思路也是很简单,如果叫没有接触过算法的人设计一个排序程序,估计大多数想出来的就是插入排序.

插入排序的数据结构是数组

最差时间复杂度是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;i
   
   
    
    0&&(t
    
    
     < code>
    
   
   

测试程序
#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;
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值