问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200 输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000
时间: 2024-02-03 16:03:11 浏览: 126
输入一个任意长度的数组,再对数组排序程序
4星 · 用户满意度95%
算法1
(冒泡排序) $O(n^2)$
时间复杂度
最坏情况下需要进行 $n(n-1)/2$ 次比较,因此时间复杂度为 $O(n^2)$。
空间复杂度
不需要额外的存储空间,因此空间复杂度为 $O(1)$。
C++ 代码
算法2
(选择排序) $O(n^2)$
时间复杂度
最坏情况下需要进行 $n(n-1)/2$ 次比较,因此时间复杂度为 $O(n^2)$。
空间复杂度
不需要额外的存储空间,因此空间复杂度为 $O(1)$。
C++ 代码
算法3
(插入排序) $O(n^2)$
时间复杂度
最坏情况下需要进行 $n(n-1)/2$ 次比较和移动,因此时间复杂度为 $O(n^2)$。
空间复杂度
不需要额外的存储空间,因此空间复杂度为 $O(1)$。
C++ 代码
算法4
(快速排序) $O(n\log n)$
时间复杂度
平均时间复杂度为 $O(n\log n)$,最坏情况下时间复杂度为 $O(n^2)$,但概率很小。
空间复杂度
需要额外的存储空间,因为需要递归调用,因此空间复杂度为 $O(\log n)$。
C++ 代码
阅读全文