码迷,mamicode.com
首页 > 编程语言 > 详细

【算法导论】插入排序

时间:2015-05-06 14:44:00      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

题外话: 这是我写的系列算法导论学习笔记的第一篇:插入排序。写下来是为了更好的理解它。

插入排序的原理:从第二个元素开始,通过将其与前面元素比较,将其插入正确的位置。

 

伪代码:

      insert_sort(A)

    for j = 2 to A.length

      k = A[j]

      i = j - 1

      while i>=0 and A[i]>k

        exchange A[i] with A[i+1]

        i = i -1

      A[i+1] = k

 

举例:

原始数据:  3,1,5,2,4,7,8,6

第一步   :  1,3,5,2,4,7,8,6     1与3交换

第二步   :  1,3,5,2,4,7,8,6     5在正确位置,不变

第三步   :  1,2,3,5,4,7,8,6     2插入到3前面 

第四步   :  1,2,3,4,5,7,8,6     4插入到5前面

第五步   :  1,2,3,4,5,7,8,6     7保持不变

第六步   :  1,2,3,4,5,7,8,6     8保持不变

第七步   :  1,2,3,4,5,6,7,8     6插入到7前面,排序完成

 

算法复杂度分析:θ(n^2)

 

C++源代码:

 #include <iostream>

 

using namespace std;

 

void insert_sort(int *a,int n){

    int i,j,k;

         for(j=1;j<n;j++){

                   k = a[j];

                   i = j - 1;

                   while(i>=0 && a[i]>k){

                            a[i+1] = a[i];

                            i--;

                   }

                   a[i+1] = k;

         }

}

 

int main(){

         int a[10]={3,1,5,2,4,7,8,6};

         insert_sort(a,8);

         for(int i=0;i<8;i++){

                   cout<<a[i]<<" ";

         }

}

【算法导论】插入排序

标签:

原文地址:http://www.cnblogs.com/heee/p/4480428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!