插入排序(insertion_sort)详解
来源:互联网 发布:淘宝客是返利网吗 编辑:程序博客网 时间:2024/05/22 05:30
使用语言:C++
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a[6]={31,41,59,26,41,58};
int len=sizeof(a)/sizeof(a[0]);//获取数组长度的方法
int key,i,j;
for(i=1;i<len;i++)
{
j=i;
key=a[j];
while(a[j-1]>a[j]&&j>0) //由小到大
{
a[j]=a[j-1];
a[j-1]=key;
j--;
}
}
//此处输出排序后的结果
for(int i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
总结:插入排序,就是打牌的时候给扑克牌排序的方式。
算法分析:
1.时间复杂度分析:
这个算法中,我们可以只关注for循环中的内容。注意到for循环执行n次。
里面还有个while循环:
a.最好的情况下,就是序列已经排好,那么while中的判断条件就会一直为true,while部分执行n次。
b.最坏的情况下,就是待排序的序列完全倒置,while的执行次数就是 [1+2+3+……+(n-1)] ,等差数列求和后是n的二次式。
以最坏情况为准,插入排序的时间复杂度为O(n*n)。
2.适用情况:少量元素排序时,插入排序很有效。但当数据量增加时,注意时间复杂度是n的2次方,一次导数是2n,二次导数为2>0。所以当n增大时,导数也越来越大,插入排序的时间开销愈发难以令人接受。对于大量数据,如果n的表达式的二次导数小于0则可以考虑。
- 插入排序(insertion_sort)详解
- Insertion_Sort(插入排序)
- 插入排序 insertion_sort
- 【算法】插入排序 insertion_sort
- 插入排序(INSERTION_SORT)
- 2.1 插入排序(insertion_sort)
- 排序算法之插入排序<Insertion_Sort>及其C语言代码实现
- insertion_sort
- insertion_sort
- insertion_sort
- Insertion_sort
- 插入排序详解
- 插入排序详解
- 详解直接插入排序
- 插入排序详解
- 折半插入排序详解
- 插入排序详解
- 插入排序详解
- ios 面试题(一)
- 写尽自己一个人的孤独,却写不出心里的寂寞
- 在批处理中使用ping命令,一个小例子进行分析
- eclipse下启动tomcat出现Setting property 'source' to 'org.eclipse.jst.jee.server: '错误的解决办法
- 最近面试的一些经验和总结,希望给跳槽的朋友一些借鉴
- 插入排序(insertion_sort)详解
- iOS 面试题二
- linux syslog + cron 构建log服务器
- 怎样快速检测出一个巨大的单链表中是否具备死链及其位置
- C#数据导出Excel详细示例
- 输入框字数限制
- 高德纳(Knuth)谈计算机程序设计艺术(下)
- UIView下使用Animation控制动画
- C++常考笔试题:用C++实现单例模式