您的位置:首页 > 其它

算法导论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代码如下.

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;
}

}




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: