排序算法
1、冒泡排序
- 原理
从第一个开始与后面的一个比较如果不相等就替换,一直比下去就会把最大的或者最小的比到最后一个元素,下一次比较的时候就把第二大或者第二小的放在倒数第二个,依次重复下去就实现排序。
- 时间复杂度
冒泡排序最好的时间复杂度为O(n)
冒泡排序的最坏时间复杂度为O(n^2)
冒泡排序最好的时间复杂度为O(n)
- 空间复杂度
排序过程中只是使用数组原本的空间进行排序,因此空间复杂度为O(1)
1 | void Bubble_Sort(int arr[],int size) |
2、快速排序
- 原理
选择一个数据为基准,将数组中的比他小的数据放一边,大的数据放在另外一边。
- 时间复杂度
快速排序算法在分治法的思想下,原数列在每一轮被拆分成两部分,每一部分在下一轮又分别被拆分成两部分,直到不可再分为止,平均情况下需要logn轮,因此快速排序算法的平均时间复杂度是O(nlogn)
在极端情况下,快速排序算法每一轮只确定基准元素的位置,时间复杂度为O(N^2)
- 空间复杂度
快速排序算法排序过程中只是使用数组原本的空间进行排序,因此空间复杂度为O(1)
- 稳定性
快速排序算法在排序过程中,可能使相同元素的前后顺序发生改变,所以快速排序是一种不稳定排序算法。
1 | /* |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哈哈!