📜  分析不同的分类技术

📅  最后修改于: 2021-04-26 19:04:09             🧑  作者: Mango

在本文中,我们将讨论不同排序技术的重要属性,包括它们的复杂性,稳定性和内存限制。在理解本文之前,您应该了解各种排序技术的基础(请参阅:排序技术)。

时间复杂度分析–
我们已经讨论了不同排序技术在可能的情况下的最佳,平均和最坏情况的复杂性。

基于比较的排序–
在基于比较的排序中,将数组中的元素相互比较以找到排序后的数组。

  • 气泡排序和插入排序–
    平均和最坏情况下的时间复杂度:n ^ 2
    最佳情况下的时间复杂度:n已对数组进行排序时。
    最坏的情况:对数组进行反向排序时。
  • 选择排序–
    最佳,平均和最坏情况下的时间复杂度:n ^ 2,与数据分布无关。
  • 合并排序–
    最佳,平均和最坏情况下的时间复杂度:nlogn,与数据分布无关。
  • 堆排序–
    最佳,平均和最坏情况下的时间复杂度:nlogn,与数据分布无关。
  • 快速排序–
    这是一种具有递归关系的分而治之的方法:
    T(n) = T(k) + T(n-k-1) + cn
    

    最坏的情况:当对数组进行排序或反向排序时,分区算法会将数组分为两个子数组,分别包含0和n-1个元素。所以,

    T(n) = T(0) + T(n-1) + cn
    Solving this we get, T(n) = O(n^2)
    

    最佳情况和平均情况:平均而言,分区算法将数组分成大小相等的两个子数组。所以,

    T(n) = 2T(n/2) + cn
    Solving this we get, T(n) = O(nlogn)
    

基于非比较的排序–
在基于非比较的排序中,不将数组元素相互比较以找到排序后的数组。

  • 基数排序–
    最佳,平均和最坏情况下的时间复杂度:nk其中,k是数组元素中的最大位数。
  • 计数排序–
    最佳,平均和最坏情况下的时间复杂度:n + k,其中k是计数数组的大小。
  • 桶分类–
    最佳和平均时间复杂度:n + k,其中k是存储桶数。
    最坏情况下的时间复杂度:如果所有元素都属于同一存储桶,则为n ^ 2。

就地/就地技术–
如果不使用任何额外的内存对数组进行排序,则排序技术就位。
在讨论的基于比较的技术中,只有合并排序才是替代技术,因为它需要一个额外的数组来合并排序后的子数组。
在讨论的基于非比较的技术中,所有都是替代技术。计数排序使用计数数组,存储桶排序使用哈希表对数组进行排序。

在线/离线技术–
如果排序过程可以在进行过程中接受新数据,即不需要完整的数据来启动排序操作,则该排序技术被视为“在线”。
在讨论的基于比较的技术中,只有插入排序才符合条件,因为它使用的是底层算法,即它从左到右处理数组(不只是元素),并且如果在右边添加新元素,则不会影响正在进行的操作。

稳定/不稳定的技术–
如果排序技术不更改具有相同值的元素的顺序,则它是稳定的。
在基于比较的技术之外,冒泡排序,插入排序和合并排序是稳定的技术。选择排序不稳定,因为它可能会更改具有相同值的元素的顺序。例如,考虑数组4、4、1、3。

在第一次迭代中,找到的最小元素为1,并在第0个位置与4交换。因此,相对于第一位置的4的4阶将改变。同样,快速排序和堆排序也是不稳定的。

在基于非比较的技术中,计数排序和存储桶排序是稳定的排序技术,而基数排序的稳定性取决于用于排序的基础算法。

分析排序技术:

  • 当数组几乎排序时,插入排序可能是首选。
  • 当输入顺序未知时,首选合并排序,因为它具有最坏情况下nlogn的时间复杂度,并且也是稳定的。
  • 对数组进行排序时,插入和冒泡排序的复杂度为n,而快速排序的复杂度为n ^ 2。

e – 1.当输入数组的所有元素都相同时,哪种排序算法将花费最少的时间?考虑排序算法的典型实现。
(A)插入排序
(B)堆排序
(C)合并排序
(D)选择排序

解决方案:如前所述,当输入数组已经排序时,插入排序将具有n的复杂度。

队列– 2.考虑Quicksort算法。假设有一个查找数据透视元素的过程,该元素将列表分成两个子列表,每个子列表至少包含元素的五分之一。令T(n)为对n个元素进行排序所需的比较次数。然后,(GATE-CS-2012)
(A)T(n)<= 2T(n / 5)+ n
(B)T(n)<= T(n / 5)+ T(4n / 5)+ n
(C)T(n)<= 2T(4n / 5)+ n
(D)T(n)<= 2T(n / 2)+ n

解决方案:快速排序的复杂性可以写成:

T(n) = T(k) + T(n-k-1) + cn

如所讨论的,一个列表包含元素总数的1/5。因此,另一个列表将具有总元素的4/5。放价值,我们得到:

T(n)= T(n / 5)+ T(4n / 5)+ cn,它与选项(B)相匹配。

时空复杂度比较表:

Sorting Algorithm Time Complexity Space Complexity
Best Case Average Case Worst Case Worst Case
Bubble Sort Ω(N) Θ(N2) O(N2) O(1)
Selection Sort Ω(N2) Θ(N2) O(N2) O(1)
Insertion Sort Ω(N) Θ(N2) O(N2) O(1)
Merge Sort Ω(N log N) Θ(N log N) O(N log N) O(N)
Heap Sort Ω(N log N) Θ(N log N) O(N log N) O(1)
Quick Sort Ω(N log N) Θ(N log N) O(N2) O(N log N)
Radix Sort Ω(N k) Θ(N k) O(N k) O(N + k)
Count Sort Ω(N + k) Θ(N + k) O(N + k) O(k)
Bucket Sort Ω(N + k) Θ(N + k) O(N2) O(N)