Setiap jawaban yang saat ini menanggapi pertanyaan ini memberi tahu Anda bahwa O(1)waktu konstan rata-rata (apa pun yang terjadi pada pengukuran; bisa jadi runtime, jumlah operasi, dll.). Ini tidak akurat.
Untuk mengatakan bahwa runtime O(1)berarti ada konstanta csedemikian rupa sehingga runtime dibatasi di atas c, tidak tergantung pada input. Misalnya, mengembalikan elemen pertama dari array nbilangan bulat adalah O(1):
int firstElement(int *a, int n) {
return a[0];
}
Tetapi fungsi ini O(1)juga:
int identity(int i) {
if(i == 0) {
sleep(60 * 60 * 24 * 365);
}
return i;
}
Runtime di sini dibatasi di atas oleh 1 tahun, tetapi sebagian besar waktu runtime berada pada urutan nanodetik.
Untuk mengatakan bahwa runtime O(n)berarti ada konstanta csedemikian rupa sehingga runtime dibatasi di atas c * n, di mana nmengukur ukuran input. Misalnya, mencari jumlah kemunculan bilangan bulat tertentu dalam larik nbilangan bulat yang tidak diurutkan dengan algoritme berikut adalah O(n):
int count(int *a, int n, int item) {
int c = 0;
for(int i = 0; i < n; i++) {
if(a[i] == item) c++;
}
return c;
}
Ini karena kita harus melakukan iterasi melalui larik yang memeriksa setiap elemen satu per satu.