Coding Fundamental: Sebuah Pengantar Struktur Data Dan Algoritma


Ketika kita berpikir tentang "struktur" kita sering berpikir arsitektur namun data juga sering memiliki struktur. Ada jenis struktur data yaitu array, grafik, antrian, tumpukan, dan sebagainya. Menggunakan struktur ini untuk dapat menyimpan secara efektif mengakses data. Kadang-kadang satu struktur data akan sangat efektif, sementara dalam situasi lain tidak begitu banyak. Mengetahui dan memahami keuntungan dan kerugian dari struktur data yang paling umum akan membantu Anda lebih mudah memutuskan mana yang digunakan menurut situasi tertentu.
Apa itu sebuah Algoritma?
Algoritma benar-benar hanya sebuah kata mewah untuk satu set instruksi khusus untuk mengikuti komputer. Ada banyak algoritma yang berbeda untuk menemukan jalan terpendek dalam grafik untuk menemukan akar persamaan kuadrat dan umumnya lebih terkait dengan struktur semacam data. Sebuah diagram alir, misalnya sebuah algoritma (set instruksi untuk memecahkan masalah.
• Menggambarkan Perilaku
Ketika kita berbicara tentang struktur data dan algoritma, Anda ingin dapat secara efektif mengukur secara tepat setiap waktunya dan penggunaan ruang (perilaku). Para ilmuwan matematikawan komputer sering menggunakan sesuatu yang disebut Big-Oh Notasi.
Perilaku yang paling umum adalah merangkum cukup baik dan layak memeriksa: Menjalankan Fungsi Waktu Kompleksitas Disarikan.
Semua ini hanya mengatakan jumlah umum waktu mengambil algoritma. Anda dapat menulis masing-masing besar-oh perilaku seperti: O (N), diucapkan "agar + ehn". Anda juga dapat menyebutnya "linear". Demikian juga, O (logN) adalah logaritmik, O (N ^ 2) adalah kuadrat, dll. Anda akan memahami bagaimana menentukan kemudian setelah ini Anda telah melihat contoh konkret, jadi jangan terlalu khawatir. N dapat berarti apa pun untuk mendefinisikannya, tapi itu sering didefinisikan sebagai masalah ukuran atau sejumlah hal Anda bekerja, misalnya jika Anda memiliki 5.000 kata-kata yang Anda ingin menyortir abjad, maka N = 5.000.
• Struktur Data umum
Sebelum kita melompat ke sesuatu yang terlalu jauh lebih rumit, mari kita pertama berkenalan dengan beberapa struktur data yang paling umum. Jika Anda paling akrab dengan Java, Anda bisa menarik pengetahuan khusus untuk bahasa pemrograman, tetapi sebagian besar struktur data ini ada di lain bahasa pemrograman berorientasi objek seperti C ++, Visual Basic, dan banyak lainnya.
Array:Array adalah serangkaian nilai-nilai yang berhubungan dengan indeks numerik. Nilai array biasanya disimpan contiguously (tepat di sebelah satu sama lain) dan mulai dengan indeks 0 Mari kita lihat contoh berbagai Array: Kita akan memiliki: array [0] = 97, array [1] = 74 .... array [9] = 60. Setiap nilai memiliki indeks terkait yang memiliki alamat memori yang dapat dihitung dari indeks itu. Hal ini membuat sangat mudah untuk mengakses elemen / nilai setiap indeks sewenang-wenang. Mengambil nilai apa pun membutuhkan O konstan (1) waktu. Perhatikan bahwa array biasanya tidak dapat tumbuh secara dinamis dalam ukuran, jadi jika misalnya Anda ingin menambahkan elemen lain untuk array di atas, Anda akan perlu untuk mendeklarasikan sebuah array baru dan menyalin semua elemen ke array baru, yang membutuhkan linear O (N ) waktu. Ini tidak berarti banyak kecuali kita memiliki sesuatu yang lain untuk membandingkannya, jadi mari kita lihat struktur data lain.
Linked-List: Definisi formal adalah "struktur data yang terdiri dari sekelompok node yang bersama-sama mewakili urutan." Seperti array, terkait daftar memiliki indeks tetapi diakses oleh iterator. Dalam daftar terkait di bawah ini, kepala adalah "12", yang mana iterator selalu dimulai. Misalkan kita memiliki daftar objek terkait disebut "daftar", maka list.head = 12 dan list.head.next = 99. node terakhir disebut ekor dan selalu "nol" (tidak ada).
Daftar terkait harus berurutan bukan akses acak karena kita harus selalu mulai dari kepala (indeks 0) dan bekerja dengan cara kami ke depan sampai kita mendapatkan indeks yang diinginkan, O (indeks) waktu. Ini adalah salah satu kelemahan utama dari daftar terkait. Selain itu, terkait daftar memerlukan lebih banyak memori karena referensi / link mengambil ruang.
Di sisi lain, itu benar-benar mudah untuk menambahkan elemen di tempat manapun. Untuk melakukan hal ini dalam sebuah array, kita sering harus menggeser atau menyalin beberapa atau semua elemen, yang dapat mahal. Dalam sebuah linked list, Anda hanya mengarahkan link ke elemen baru, sehingga jika Anda memiliki situasi di mana menambah dan menghapus secara acak diperlukan, maka Anda mungkin harus menggunakan struktur daftar data terkait.
Dalam rangka untuk membuat akses pada akhir linked list seefisien di depan, kita membuat apa yang disebut daftar ganda terkait. Kami hanya hanya menambahkan link pergi dari ekor ke kepala, maka mana setengah dari daftar kita berada di menentukan apakah kita mulai kepala atau ekor. Hal ini akan memerlukan lebih banyak ruang, tetapi biasanya meningkatkan kinerja worth it.
Ada setengah lusin struktur data umum lainnya yang akan berguna untuk mengetahui, tapi saya tidak ingin membuat artikel ini menjijikkan lama, jadi kami akan berhenti di sini dan terus dalam artikel selanjutnya. Saya juga mungkin akan menulis beberapa artikel berfokus pada algoritma karena kita sebagian besar tertutup struktur data di sini.














Comments

Popular Posts