HF_Cherish

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
//插入排序伪代码
1
INSERTION-SORT(A) 2 for( j=2; j<=length[A]; j++ ) 3 do key = A[j]; 4 //insert A[j] into the sorted sequence A[1..j-1] 5 i = j-1; 6 while( i>0 && A[i]>key ) 7 do A[i++] = A[i]; 8 i--; 9 A[i+1] = key;
//ascending,程序代码
void InsertionSort( int a[], int n ){
    int i,j;
    for( j=1; j<n; j++ ){
        int temp = a[j];
        for( i=j-1; i>=0; i-- ){
            if( a[i]>temp ) a[i+1] = a[i];
            else break;
        }
        a[i+1] = temp;
    }
}

1、检查代码正确性:循环不变式

2、时间分析

2.1时间分析函数:

算法的运行时间为每一步的运行时间之和。

2.2 最好情况分析

此时,输入数组已排好序,tj = 1,最佳运行时间为如下所示,可表示为an+b,即是O(n):

2.3 最坏情况分析

此时,输入数组为逆序,tj = j,最坏情况运行时间为如下所示,可表示为an2+bn+c,即是O(n2).

posted on 2013-12-16 10:18  HF_Cherish  阅读(186)  评论(0编辑  收藏  举报