您的位置:首页 > 其它

算法学习之旅,中级篇(2)-–插入排序

2017-08-18 22:15 162 查看
介绍

每次从无序表中取出第一个元素,把它插入到有序表中的合适位置。

分析

第一趟:比较前两个数的大小,然后把其中最小的插入排在第一个位置。

第二趟:比较第三个数与前两个数的大小,大的数后移,知道遇到小的,便插入到较小数的后面,数不再移动。

依次进行,进行了N-1躺后,就完成了整个排序过程。

代码

#include<iostream>
using namespace std;
void print(int a[],int n)
{
for(int j=0;j<n;j++)
cout<<a[j]<<" ";
cout<<endl;
return;
}
void insert_Sort(int array[],int n)
{
for(int i=1;i<n;i++)
{
if(array[i]<array[i-1])
{
int temp=array[i];
int k=i-1;
for(int j=k;j>=0&&temp<array[j];j--)
{
array[j+1]=array[j];
k--;
}
array[k+1]=temp;

}
}
}
int main()
{
int a[8]={3,2,4,5,7,1,2,9};
cout<<"初始值: ";
for(int j=0;j<8;j++)
cout<<a[j]<<" ";
cout<<endl<<endl;
insert_Sort(a,8);
print(a,8);
system("pause");
return 0;
}


遇到的问题

插入排序是稳定的排序算法。最坏的时间复杂度是逆序o(n^2)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  插入排序 算法