這裏是一個排序算法,而不是一個聰明的算法。在這個版本中,當元素是非負的並且最多隻發生一次時,它可以很好地工作。我對它的時間複雜性感到困惑。它是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'任意地更差。 –