Apa beberapa algoritma yang kita gunakan setiap hari yang memiliki kompleksitas O (1), O (n log n) dan O (log n)?
algorithm
time-complexity
Rachel
sumber
sumber
Jawaban:
Jika Anda menginginkan contoh Algoritma / Kelompok Pernyataan dengan kompleksitas Waktu seperti yang diberikan dalam pertanyaan, berikut adalah daftar kecilnya -
O(1)
waktuO(n)
waktuSingkatnya, semua Algoritma Brute Force, atau Noob yang membutuhkan linearitas, didasarkan pada kompleksitas waktu O (n)
O(log n)
waktuO(n log n)
waktuFaktor 'log n' diperkenalkan dengan mempertimbangkan Divide and Conquer. Beberapa dari algoritma ini adalah yang paling optimal dan sering digunakan.
O(n^2)
waktuAlgoritma ini seharusnya menjadi algoritma yang kurang efisien jika pasangan O (nlogn) mereka ada. Penerapan umum mungkin Brute Force di sini.
sumber
O(log n)
daftar menjadi sebelumO(n)
daftar sehingga daftar tersebut berurutan dari yang terbaik ke yang terburuk. haha :)Contoh sederhana dari
O(1)
mungkinreturn 23;
- apa pun masukannya, ini akan kembali dalam waktu yang tetap dan terbatas.Contoh tipikal
O(N log N)
akan menyortir array input dengan algoritma yang baik (misalnya mergesort).Contoh tipikal jika
O(log N)
akan mencari nilai dalam larik input yang diurutkan menurut pembagian.sumber
O (1) - sebagian besar prosedur memasak adalah O (1), artinya, dibutuhkan jumlah waktu yang konstan bahkan jika ada lebih banyak orang untuk memasak (sampai tingkat tertentu, karena Anda dapat kehabisan ruang di panci / wajan Anda dan perlu membagi masakan)
O (logn) - menemukan sesuatu di buku telepon Anda. Pikirkan pencarian biner.
O (n) - membaca buku, di mana n adalah jumlah halaman. Ini adalah jumlah waktu minimum yang diperlukan untuk membaca buku.
O (nlogn) - tidak dapat langsung memikirkan sesuatu yang mungkin dilakukan setiap hari yaitu nlogn ... kecuali jika Anda mengurutkan kartu dengan melakukan merge atau quick sort!
sumber
Saya dapat menawarkan beberapa algoritma umum ...
Ini akan menjadi tanggapan yang tepat karena ini terdengar seperti pertanyaan pekerjaan rumah / wawancara. Jika Anda mencari sesuatu yang lebih konkret, itu sedikit lebih sulit karena publik pada umumnya tidak akan tahu tentang implementasi yang mendasari (tentu saja menghemat sumber terbuka) dari aplikasi populer, juga tidak konsep secara umum berlaku untuk "aplikasi"
sumber
O (1): menemukan langkah terbaik berikutnya dalam Catur (atau Pergi dalam hal ini). Karena jumlah status game terbatas, hanya O (1) :-)
sumber
O(1)
nanodetik, dan Anda pasti tahu mana yangO(1)
akan terjadi lebih dulu ...Kompleksitas aplikasi perangkat lunak tidak diukur dan tidak ditulis dalam notasi big-O. Mengukur kompleksitas algoritma dan membandingkan algoritma dalam domain yang sama hanya berguna. Kemungkinan besar, ketika kita mengatakan O (n), yang kita maksud adalah "O (n) perbandingan " atau "O (n) operasi aritmatika". Artinya, Anda tidak dapat membandingkan pasangan algoritme atau aplikasi apa pun.
sumber
O (1) - Menghapus elemen dari daftar tertaut ganda. misalnya
sumber
Anda dapat menambahkan algoritme berikut ke daftar Anda:
O(1)
- Menentukan apakah suatu bilangan genap atau ganjil; Bekerja dengan HashMapO(logN)
- menghitung x ^ N,O(N Log N)
- Peningkatan urutan terlamasumber
O (n log n) terkenal sebagai batas atas seberapa cepat Anda dapat mengurutkan himpunan arbitrer (dengan asumsi model komputasi standar dan tidak terlalu paralel).
sumber
0 (logn) -Pencarian biner, elemen puncak dalam sebuah array (bisa ada lebih dari satu puncak) 0 (1) -in python menghitung panjang daftar atau string. Fungsi len () membutuhkan 0 (1) waktu. Mengakses elemen dalam larik membutuhkan 0 (1) waktu. Operasi dorong dalam tumpukan membutuhkan waktu 0 (1) kali. 0 (nlogn) -Gabungkan semacam. menyortir dengan python membutuhkan waktu nlogn. jadi ketika Anda menggunakan listname.sort () dibutuhkan waktu nlogn.
Catatan-Pencarian dalam tabel hash terkadang membutuhkan lebih dari waktu konstan karena benturan.
sumber
O (2 N )
O (2 N ) menunjukkan algoritma yang pertumbuhannya berlipat ganda dengan setiap penambahan ke kumpulan data masukan. Kurva pertumbuhan suatu fungsi O (2 N ) bersifat eksponensial - dimulai dari sangat dangkal, kemudian naik secara meteorik. Contoh dari fungsi O (2 N ) adalah perhitungan rekursif dari bilangan Fibonacci:
sumber
Tower of Hanoi
akan menjadi contoh yang lebih baik.