My first Magazine pemrograman-kompetitif-dasar | Page 92

8 Struktur Data Dasar II Sekilas Info JJ Analisis kompleksitas untuk menghitung kompleksitas push disebut dengan amortized analysis. Pada amortized analysis, kompleksitas suatu algoritma tidak semata-mata dinya- takan menurut kasus terburuk yang mungkin, tetapi diperhatikan keseluruhan operasi yang dilakukan. 12 Kompleksitas dari operasi push dynamic array lebih tepat untuk dikatakan amortized O(1). 8.1.1 Aplikasi Dynamic Array Struktur data ini cocok digunakan ketika kita tidak tahu banyaknya elemen yang akan disimpan. Sebagai contoh, misalnya kita perlu menyimpan nama N orang yang dikelompokkan menurut berat badan dalam kilogram (kg). Asumsikan pula berat badan N orang ini berupa bilangan bulat pada rentang 1 kg sampai dengan K kg, dan belum diketahui berapa paling banyak orang yang memiliki berat sekian kg. Untuk menyimpan data tersebut, kita dapat membuat array nama dengan K elemen, yang masing-masing elemennya berupa dynamic array . Untuk orang dengan berat x kg, simpan datanya pada dynamic array nama[x]. Dengan cara ini, kebutuhan memorinya adalah O(N). Bandingkan apabila kita membuat array nama dengan K elemen, yang masing-masing ele- mennya berupa array . Berhubung untuk kasus paling buruk terdapat N orang yang memiliki berat yang sama, maka kita perlu membuat masing-masing array sebesar N. Kebutuhan memorinya adalah O(KN), yang jelas tidak efisien apabila K cukup besar. Contoh ini merupakan salah satu penggunaan dari dynamic array . Seiring dengan pembela- jaran dan latihan, Anda akan menemukan kasus-kasus ketika dynamic array diperlukan. 8.1.2 Implementasi Dynamic Array Implementasi dynamic array dapat diwujudkan dengan sebuah array , variabel size, dan maxSize. Operasi untuk mengubah atau mengakses elemen dari suatu indeks dapat langsung dilakukan pada A. Tentu saja indeks yang perlu diakses harus kurang dari maxSize. Perhatikan Algoritma 40 untuk memahami operasi push pada dynamic array . Algoritma 40 Implementasi dynamic array . procedure INITIALIZE D YNAMIC A RRAY () . Seluruh variabel yang diinisialisasi bersifat global size ← 0 3: maxSize ← 1 4: A ← new integer[maxSize] 5: end procedure 1: 2: 82