Istilah apa yang dapat saya gunakan untuk menggambarkan sesuatu dengan kompleksitas O (N log N)?
Sebagai contoh:
O (1): Konstan
O (log N): Logaritmik
O (N): Linear
O (N log N): ??????
O (N 2 ): Kuadratik
O (N 3 ): Kubik
algorithms
algorithm-analysis
big-o
matiascelasco
sumber
sumber
O(n · f(n))
manaf(n) << n
. Tapi ini cocok juga dengan hal-hal sepertiO(n · log log n)
dan diO(n α(n))
manaα(n)
kebalikan dari fungsi Ackermann.Jawaban:
"N log N" sama bagusnya dengan yang Anda dapatkan, dan harus dipahami dengan baik oleh programmer profesional. Anda tidak dapat mengharapkan ada satu kata untuk menggambarkan setiap kelas kompleksitas yang ada.
sumber
Ada istilah jargon yang artinya linearitmik persis ini.
Saya tidak percaya bahwa itu dipahami secara universal oleh semua programmer, jadi jika Anda tidak hati-hati maka itu akan mengaburkan lebih daripada yang diinformasikan. Secara pribadi saya biasanya tidak menggunakannya, dan jika saya melakukannya maka saya mungkin akan mendefinisikannya pada penggunaan pertama, misalnya "artikel ini menganggap linearithmic (
O(N log N)
) algoritma".sumber
Kadang-kadang disebut "loglinear", meskipun kata itu sebenarnya berarti sesuatu yang berbeda. Saya hanya akan tetap dengan "N log N", meskipun, seperti jawaban @ Philip menyarankan.
sumber
Karena faktor tersebut
log n
tumbuh lambat, deskripsi kualitatifO(n log n)
akan "hampir linier". Bergantung pada audiens Anda, kelasO(n log n)
algoritme mungkin terkenal, seperti misalnya ini halnya dengan pengurutan cepat padan
item berdasarkan perbandingan.sumber