这里是一个排序算法,而不是一个聪明的算法。在这个版本中,当元素是非负的并且最多只发生一次时,它可以很好地工作。我对它的时间复杂性感到困惑。它是O(n)吗?那么比这个符号快速排序更好吗?谢谢。下面是代码:排序算法的复杂性
public int[] stupidSort(int[] array){
// Variables
int max = array[0];
int index = 0;
int[] lastArray = new int[array.length];
// Find max element in input array
for(int i = 0; i < array.length; i++){
if (array[i] > max)
max = array[i];
}
// Create a new array. In this array, element n will represent number of n's in input array
int[] newArray = new int[max + 1];
for (int j = 0; j < array.length; j++)
newArray[array[j]]++;
// If element is bigger than 0, it means that number occured in input. So put it in output array
for(int k = 0; k < newArray.length; k++){
if(newArray[k] > 0)
lastArray[index++] = k;
}
return lastArray;
}
感谢您的回答和建议。 – aladinsane7
不客气。您也可以将我的答案标记为已接受。谢谢 :) ! – Thanasis
该算法不是O(n)。 'new int [max + 1]'(以及后面的'k'循环)需要O('max')时间,这个时间可能比'n'任意地更差。 –