//插入排序伪代码
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).