算法导论第七章题解——插入排序

算法导论第七章例题——插入排序

快速排序的平均意义上的时间复杂度是nlgn,最差意义上的时间复杂度是n*n,算法的好坏取决于所选取的用于划分数组的元素的大小。

算法的思路是:将数组按照某个元素划分为两个部分,并单独对这两个部分数组进行就地排序,就地排序时重复利用划分的方法将数组分为更小的两部分。

本代码中为了使代码具有平均意义上的时间复杂度,添加了RandomizedPartition函数进行优化,该函数的思路是随机选取介于p和r之间的元素和

r元素互换,然后再按照a[r]进行划分数组。