优化的c++代码,时间复杂度为O(n2),空间复杂度为0(1),用于后续输入



数组i/p:1 0 0 2 1 0 2 1

注:只有3个数字,即0,1,2。我们必须使用的一个函数是:SWAP(arr,index1,index2)实施方法是:void排序(int arr[],int length)

预期o/p:0 0 0 1 1 1 2 2

有很多算法可以对数字数组进行排序。最简单的冒泡排序具有O(n2)的时间复杂度和O(1)的空间复杂度。

更多O(n2)排序算法:选择排序和插入排序。

然而,有更好的算法可以实现O(n.logn)的时间复杂度-合并排序、快速排序等。

你说只有3个数字是什么意思:0,1,2。如果输入是固定的,并且我们知道只有这3个数字,那么最简单的排序方法是计算这些数字中每一个的出现次数。例如:

occurrences[0] = 3; occurrences[1] = 3; occurrences[2] = 2;

然后,您可以简单地写入输出数组,每个数字都重复出现次数[]。此解决方案的时间复杂性:O(m)此解的空间复杂度:O(m)这里需要注意的是,"m"是可能的数字的数量,所以这里m=3,而不是输入数组中的整数数量,我们称之为"n"。

最新更新