Sains komputer adalah tentang memahami kerumitan algoritma dan struktur data.
Anda mempunyai senarai item yang perlu diisih, tetapi anda tidak mempunyai masa atau sumber untuk menggunakan algoritma pengisihan yang lebih kompleks.
Pengisihan sisipan ialah salah satu algoritma pengisihan yang paling mudah, tetapi ia boleh menjadi perlahan untuk senarai yang besar.
Pelaksanaan dan pemahaman yang mudah telah menjadikan kaedah ini kegemaran di kalangan pengaturcara. Ia sesuai untuk senarai kecil atau apabila anda memerlukan penyelesaian pantas.
Dalam catatan blog ini, kita akan melihat kerumitan masa pengisihan sisipan. Algoritma ini digunakan untuk mengisih tatasusunan, dan ia mempunyai masa jalan O(n2). Ini bermakna kerumitan masa meningkat dengan saiz tatasusunan.
Walau bagaimanapun, algoritma ini selalunya lebih pantas daripada algoritma pengisihan lain, seperti quicksort.
Mari kita lihat dengan lebih dekat cara pengisihan sisipan berfungsi!
Apakah Algoritma Isih Sisipan?
Satu elemen pada satu masa, isihan sisipan menjana tatasusunan boleh diisih, yang sering disebut sebagai senarai.
Sebagai contoh, pengisihan digunakan dalam program komputer yang rumit seperti penyusun, di mana susunan token adalah penting untuk tafsiran atur cara.
Bagaimanakah Isih Sisipan Berfungsi?
Apabila kami menggunakan isihan sisipan untuk mengisih tatasusunan, algoritma bermula dengan mencari item terkecil dalam senarai dan memasukkannya ke kedudukan yang betul.
Ia kemudian mencari item terkecil seterusnya dan memasukkannya ke kedudukan yang betul, dan seterusnya.
Algoritma berfungsi dengan menggelung senarai, membandingkan setiap item dengan item yang datang sebelum itu.
Jika item berada dalam susunan yang salah, algoritma menukarnya. Ia kemudian menyemak untuk melihat sama ada senarai itu diisih, dan jika ya, algoritma tamat.
Dalam amalan, isihan sisipan sering dilaksanakan menggunakan beberapa baris kod, menjadikannya pilihan popular untuk menyusun tatasusunan kecil. Walau bagaimanapun, kerumitan masa harus dipertimbangkan apabila menggunakan algoritma ini.
Contoh:
Berikut ialah contoh cara pengisihan sisipan berfungsi. Kami akan menggunakan tatasusunan berikut:
1, 2, 3, 4, 5, 6
Algoritma bermula dengan mencari item terkecil dalam senarai, iaitu 1. Ia kemudian memasukkannya ke kedudukan yang betul, kedudukan pertama. Ia kemudian mencari item terkecil seterusnya, iaitu 2. Ia memasukkannya ke kedudukan yang betul, iaitu kedudukan kedua.
Ia kemudian mencari item terkecil seterusnya, iaitu 3. Ia memasukkannya ke kedudukan yang betul, iaitu kedudukan ketiga.
Ia kemudian mencari item terkecil seterusnya, iaitu 4. Ia memasukkannya ke kedudukan yang betul, iaitu kedudukan keempat, dan seterusnya. Senarai itu kini disusun!
Kita boleh lihat daripada contoh bahawa algoritma mengambil enam perbandingan dan swap untuk mengisih senarai. Ini kerana ia memerlukan n2 perbandingan dan swap untuk mengisih senarai n item. Dalam kes ini, n=6.
Bagaimana untuk Meningkatkan Kerumitan Masa Isih Sisipan?
Walaupun isihan sisipan mempunyai masa jalan O(n2), ia boleh diperbaiki dengan menggunakan algoritma pengisihan yang lebih baik, seperti quicksort.
Quicksort mempunyai masa jalan O(n log n), yang jauh lebih pantas daripada O(n2).
Walau bagaimanapun, dalam beberapa kes, pengisihan sisipan boleh menjadi lebih cepat daripada pengisihan cepat.
Contohnya, jika senarai sudah teratur, pengisihan sisipan akan mengambil masa yang lebih singkat daripada pengisihan cepat.
Dalam amalan, isihan sisipan sering dilaksanakan menggunakan beberapa baris kod, menjadikannya pilihan popular untuk menyusun tatasusunan kecil.
Walau bagaimanapun, kerumitan masa harus dipertimbangkan apabila menggunakan algoritma ini.
Kerumitan Masa
Kerumitan Kes Terburuk O(n2):
Kerumitan masa meningkat dengan saiz tatasusunan. Ia memerlukan n2 perbandingan dan swap untuk mengisih senarai n item.
Sebagai contoh, jika kita mempunyai tatasusunan bersaiz 1000, algoritma akan mengambil 1,000,000 perbandingan dan pertukaran untuk mengisih tatasusunan.
Kerumitan Kes Terbaik O(n):
Kerumitan masa adalah sama dengan saiz tatasusunan input. saya
t mengambil n perbandingan dan swap untuk mengisih senarai n item. Sebagai contoh, pertimbangkan tatasusunan saiz 5. Algoritma akan mengambil lima perbandingan dan swap untuk mengisih tatasusunan.
Purata Kerumitan Kes O(n2):
Kerumitan masa adalah antara kerumitan kes terburuk dan terbaik dalam kes ini.
Ia memerlukan n2 perbandingan dan swap untuk mengisih senarai n item.
Oleh itu, pengisihan sisipan adalah algoritma pengisihan yang stabil.
Mengapa Isih Sisipan Stabil?
Isihan sisipan adalah stabil kerana ia mengekalkan susunan elemen yang sama dalam tatasusunan input.
Ini penting untuk banyak aplikasi, seperti pengambilan data atau analisis kewangan. Sebagai contoh, jika kita mempunyai dua senarai nombor dan ingin membandingkannya, kita perlu memastikan bahawa susunan unsur-unsur itu dipelihara.
Jika senarai tidak diisih, kami tidak akan membandingkannya dengan tepat.
Sila tinggalkan balasan anda