排序篇(六)----排序小结(不用三连,混流量券)
排序篇(六)----排序小结
排序算法复杂度及稳定性分析
直接插入排序的算法复杂度:
- 最好情况下,当数组已经有序时,直接插入排序的时间复杂度为O(n),其中n是数组的大小。
- 最坏情况下,当数组逆序排列时,直接插入排序的时间复杂度为O(n^2)。
- 平均情况下,直接插入排序的时间复杂度也为O(n^2)。
直接插入排序是一种稳定的排序算法,它的稳定性表现在相同元素的相对顺序不会改变。
希尔排序的算法复杂度:
- 希尔排序的时间复杂度取决于增量序列的选择,最坏情况下的时间复杂度为O(n^2),平均情况下的时间复杂度为O(nlogn)。
- 希尔排序的空间复杂度为O(1)。
希尔排序是一种不稳定的排序算法,它的不稳定性表现在相同元素的相对顺序可能会改变。
直接选择排序的算法复杂度:
- 无论数组的初始顺序如何,直接选择排序的时间复杂度都为O(n^2)。
- 直接选择排序的空间复杂度为O(1)。
直接选择排序是一种不稳定的排序算法,它的不稳定性表现在相同元素的相对顺序可能会改变。
堆排序的算法复杂度:
- 堆排序的时间复杂度始终为O(nlogn),其中n是数组的大小。
- 堆排序的空间复杂度为O(1)。
堆排序是一种不稳定的排序算法,它的不稳定性表现在相同元素的相对顺序可能会改变。
冒泡排序的算法复杂度:
- 冒泡排序的最好情况下,当数组已经有序时,时间复杂度为O(n)。
- 冒泡排序的最坏情况下,当数组逆序排列时,时间复杂度为O(n^2)。
- 冒泡排序的平均情况下,时间复杂度也为O(n^2)。
冒泡排序是一种稳定的排序算法,它的稳定性表现在相同元素的相对顺序不会改变。
快速排序的算法复杂度:
- 快速排序的最好情况下,当每次划分都能均匀地将数组分为两部分时,时间复杂度为O(nlogn)。
- 快速排序的最坏情况下,当每次划分都选择了最大或最小的元素作为基准时,时间复杂度为O(n^2)。
- 快速排序的平均情况下,时间复杂度为O(nlogn)。
快速排序是一种不稳定的排序算法,它的不稳定性表现在相同元素的相对顺序可能会改变。
归并排序的算法复杂度:
- 归并排序的时间复杂度始终为O(nlogn),其中n是数组的大小。
- 归并排序的空间复杂度为O(n)。
归并排序是一种稳定的排序算法,它的稳定性表现在相同元素的相对顺序不会改变。
计数排序的算法复杂度:
- 计数排序的时间复杂度为O(n+k),其中n是数组的大小,k是计数数组的大小。
- 计数排序的空间复杂度为O(n+k)。
计数排序是一种稳定的排序算法,它的稳定性表现在相同元素的相对顺序不会改变。计数排序适用于元素范围较小的情况。
。计数排序适用于元素范围较小的情况。
[外链图片转存中…(img-N9rKGkPO-1700183881150)]