首页 > 栏目列表 > 正文

快速排序时间复杂度

快速排序时间复杂度
阅读数29579
快速排序时间复杂度
兔牙萝莉
兔牙萝莉
个性签名:生活就像海洋,只有强者才能到达彼岸。不畏艰难,勇往直前,成就卓越人生。

快速排序法的平均时间复杂度和最坏时间复杂度分别是多少?

快速排序的平均时间复杂度和最坏时间复杂度分别是O(nlgn)、O(n^2)。 当排序已经成为基本有序状态时,快速排序退化为O(n^2),一般情况下,排序为指数复杂度。 快速排序最差情况递归调用栈高度O(n),平均情况递归调用栈高度O(logn),而不管哪种情况栈的每一层处理时间都是O(n),所以,平均情况(最佳情况也是平均情况)的时间复杂度O(nlogn),最差情况的时间复杂度为O(n^2)。 扩展资料 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序,它采用了一种分治的策略,通常称其为分治法。快速排序算法通过多次比较和交换来实现排序,其排序流程如下: (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。 (2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。 (3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。 (4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

兔牙萝莉
兔牙萝莉
个性签名:生活就像海洋,只有强者才能到达彼岸。不畏艰难,勇往直前,成就卓越人生。

快速排序时间复杂度

快速排序时间复杂度如下: 排序算法的时间复杂度是若文件的初始状态是正序的,一趟扫描即可完成排序。 比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的。 各种常用的算法,对时间复杂度的情况是这样。直接插入排序,是n平方的时间复杂度。直接选择排序是n平方的时间复杂度,冒泡排序也是n平方的时间复杂度。快速排序,希尔排序,和归并排序,都是n×(logn)的时间复杂度。 扩展资料: 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),存在一个正常数c使得fn*c>=T(n)恒成立。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。 在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n^2+3n+4与T(n)=4n^2+2n+1它们的频度不同,但时间复杂度相同,都为O(n^2)。 次线性时间 对于一个算法,若其匹配T(n) = o(n),则其时间复杂度为次线性时间(sub-linear time或sublinear time)。实际上除了匹配以上定义的算法,其他一些算法也拥有次线性时间的时间复杂度。例如有O(n)葛罗佛搜索算法。