数据结构c语言版算法与数据结构.ppt

4 算法分析 ⑴ 最好情况:若待排序记录按关键字从小到大排列(正序),算法中的内循环无须执行,则一趟排序时:关键字比较次数1次,记录移动次数2次(R[i]→R[0], R[0]→R[j+1])。 则整个排序的关键字比较次数和记录移动次数分别是: 比较次数: ∑1=n-1 n i=2 移动次数: ∑ 2=2(n-1) n i=2 ⑵ 最坏情况:若待排序记录按关键字从大到小排列(逆序),则一趟排序时:算法中的内循环体执行i-1,关键字比较次数i次,记录移动次数i+1。 则就整个排序而言: 比较次数: ∑ i= n i=2 (n-1)(n+1) 2 移动次数: ∑(i+1)= n i=2 (n-1)(n+4) 2 一般地,认为待排序的记录可能出现的各种排列的概率相同,则取以上两种情况的平均值,作为排序的关键字比较次数和记录移动次数,约为n2/4,则复杂度为O(n2) 。 10.2.2 其它插入排序 1 折半插入排序 当将待排序的记录R[i] 插入到已排好序的记录子表R[1…i-1]中时,由于R1, R2 ,…, Ri-1已排好序,则查找插入位置可以用“折半查找”实现,则直接插入排序就变成为折半插入排序。 ⑴ 算法实现 void Binary_insert_sort(Sqlist *L) { int i, j, low, high, mid ; f

文档评论(0)

1亿VIP精品文档

相关文档