关于快速排序及其最坏情况时间复杂度的问题,假设您为每个分区级别选择中间枢轴
Question about quicksort and its worst-case time complexity assuming you choose the middle pivot for each partitioning level
因此,如果您选择一个是最小或最大元素的枢轴,这将导致下一次调用的大小为 n - 1。因此,如果您重复此操作,将获得大小 n - 2、n - 3 等等获得快速排序的最坏情况时间复杂度,即 O(n^2)。
问题是,要获得 n - 1、n - 2、n - 3 等这种模式,您总是需要选择一个错误的主元,这意味着主元始终需要是最大或最小的元素。我的问题是,假设您总是选择中间枢轴,那么顺序是什么,例如。 {2, 3, 1, 6, 5, 7}
会产生二次复杂度吗?
通过一些测试,我发现 {4, 5, 6, 7, 3, 2, 1}
似乎遵循最坏情况模式(同样总是选择中间枢轴)直到调用 n - 2,它分裂成一个均匀和不均匀的分区.据我了解,时间复杂度可以通过每个分区级别的复杂度总和来定义。所以我想知道 {4, 5, 6, 7, 3, 2, 1}
是否仍然产生最坏情况的时间复杂度,即使它没有一直遵循 n - 1 模式,如果它不产生最坏情况的时间复杂度如何我会找到一个排序整数序列的顺序吗?限制是我总是选择中间枢轴;确实如此。
任何帮助将不胜感激,我已经被这个问题困扰了很长时间!
使用问题的方法,并假设 pivot = array[(lo+hi)/2],那么对于 pivot 是最小元素的模式,一个序列是减少偶数,然后增加奇数:
{6, 4, 2, 1, 3, 5, 7}
6 4 2 3 5 7
6 4 3 5 7
6 4 5 7
6 5 7
6 7
7
因此,如果您选择一个是最小或最大元素的枢轴,这将导致下一次调用的大小为 n - 1。因此,如果您重复此操作,将获得大小 n - 2、n - 3 等等获得快速排序的最坏情况时间复杂度,即 O(n^2)。
问题是,要获得 n - 1、n - 2、n - 3 等这种模式,您总是需要选择一个错误的主元,这意味着主元始终需要是最大或最小的元素。我的问题是,假设您总是选择中间枢轴,那么顺序是什么,例如。 {2, 3, 1, 6, 5, 7}
会产生二次复杂度吗?
通过一些测试,我发现 {4, 5, 6, 7, 3, 2, 1}
似乎遵循最坏情况模式(同样总是选择中间枢轴)直到调用 n - 2,它分裂成一个均匀和不均匀的分区.据我了解,时间复杂度可以通过每个分区级别的复杂度总和来定义。所以我想知道 {4, 5, 6, 7, 3, 2, 1}
是否仍然产生最坏情况的时间复杂度,即使它没有一直遵循 n - 1 模式,如果它不产生最坏情况的时间复杂度如何我会找到一个排序整数序列的顺序吗?限制是我总是选择中间枢轴;确实如此。
任何帮助将不胜感激,我已经被这个问题困扰了很长时间!
使用问题的方法,并假设 pivot = array[(lo+hi)/2],那么对于 pivot 是最小元素的模式,一个序列是减少偶数,然后增加奇数:
{6, 4, 2, 1, 3, 5, 7}
6 4 2 3 5 7
6 4 3 5 7
6 4 5 7
6 5 7
6 7
7