Array
ARRAY
(LARIK) DAN RECORD
Salah satu struktur data yang teramat penting adalah array atau larik.
Array merupakan bagian dasar, yang disebut blok, guna keperluan pembentukan suatu struktur data lain yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat disajikan secara logik oleh array.
Kita dapat mendefinisikan array sebagai suatu himpunan hingga elemen, terurut dan homogen. Terurut, kita artikan bahwa elemen tersebut dapat diidentifikasi sebagai elemen pertama, elemen kedua, dan seterusnya sampai elemen ke-n.
Sedangkan pengertian elemen yang homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.
Jadi suatu array dapat mempunyai elemen semuanya berupa integer atau dapat pula seluruhnya berupa untai aksara atau string Bahkan dapat pula terjadi bahwa suatu array mempunyai elemen berupa array pula.
Sebenarnya, pengertian array telah banyak kita kenal, dan kita pelajari dalam matematika. Di sana, array lebih terkenal sebagai matriks. Kadang-kadang ia disebut juga sebagai tabel. Juga pernah kita dengar tentang vektor. Vektor adalah bentuk yang paling sederhana dari array. Vektor merupakan array dimensi satu atau one dimensional array.
ARRAY DIMENSI SATU
Sebuah array dimensi satu, yang misalnya kita beri nama NILAI, dapat kita bayangkan berbentuk seperti berikut
Nilai(1) |
Nilai(2) |
Nilai(3) |
- - - |
Nilai(n) |
Subscript atau indeks dari elemen array menyatakan posisi elemen pada urutan dalam array tersebut. Notasi yang digunakan bagi elemen array, biasanya adalah nama array dilengkapi dengan subcript.
Secara umum, suatu array dimensi satu A dengan tipe data T dan subscript bergerak dari L sampai dengan U, ditulis sebagai A(L:U) = (A(l)), I = L, L+1, L+2,..., U, dan setiap elemen A(l) bertipe data T.
Sebagai contoh, kita dapat menuliskan data hasil pencatatan suhu suatu ruangan setiap satu jam selama periode 24 jam, dalam sebuah array dimensi satu. Harga minimum dari subscript dari array disebut batas bawah atau lower bound, sedangkan harga maksimumnya disebut batas atas atau upper bound. Jadi pada array di atas, L merupakan batas bawah, dan U batas atas. Sedangkan untuk array ''suhu'' yang elemennya dapat kita tulis sebagai SUHU(I), batas bawahnya adalah 1 dan batas atasnya 24. SUHU(I) menyatakan suhu pada jam ke-1, dan I memenuhi 1 <= I <= 24, I merupakan integer.
Batas bawah dari array, pada beberapa aplikasi, tidak selalu diambil 1. Kadangkadang diambil batas bawah nol, bahkan juga negatif. Banyaknya elemen sebuah array disebut rentang atau range. Jadi array A(L:U) mempunyai range sebesar U-L+1. Secara khusus bila L=l dan U=N, maka range dari array A(l:N) adalah N-I+1 = N.
ARRAY DIMENSI BANYAK
Sebuah array dimensi banyak atau multi-dimensional array didefinisikan sebagai sebuah array yang elemennya berupa array pula. Misal array B mempunyai M elemen berupa array pula, yang terdiri dari N elemen. Kalau hal tersebut kita gambarkan, akan terbentuk baris dan kolom seperti terlihat berikut
1 |
2 |
N |
||
1 |
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
M |
|
|
|
|
Untuk itu diperlukan dua buah subscript. Yang pertama digunakan untuk menyatakan posisi baris, sedangkan yang kedua untuk posisi kolom. Secara umum array dimensi dua B, dengan elemen bertipe data T, subscript baris dari l sampai M, subscript kolom dari l sampai N, ditulis sebagai B(1:M, 1:N) = (B(I,J)), I = 1, 2, ...,M dan J = 1, 2,...,N dengan setiap elemen B(I,J) bertipe data T. Array B tersebut dikatakan berukuran atau berorder M x N. Di sini banyak elemen array adalah M*N.
Contoh dari array dimensi dua sangat banyak kita jumpai. Misalnya nilai ujian 500 mahasiswa tingkat 3, untuk 8 mata kuliah dapat kita sajikan sebagai array dimensi dua yang berorder 500 x 8. Elemen B(I,J) menyatakan nilai mahasiswa ke-I untuk mata kuliah ke-J.
Seperti halnya pada array dimensi satu, pada array dimensi dua batas bawah untuk subscript I maupun J dapat diambil secara umum. Misalnya, batas bawah subscript baris adalah L1 subscript kolom adalah L2 sedangkan batas atas subscript baris adalah U1. Dan untuk kolom adalah U2, maka array dimensi dua tersebut dapat dinotasikan sebagai :
B(L1:U1, L2:U2)
= (B(I,J)), L1 <= 1 <= U1, L2 <=J
<= U2
dengan setiap elemen B(I,J) bertipe data T. Banyaknya elemen pada
setiap baris adalah U2 – L2 + 1 dan pada
setiap kolom adalah U1–L1+l, sehingga
banyaknya elemen pada array B semua ada = (U2-L2
+1) * (U1-L1 +1).Yang dimaksud dengan cross-section suatu array berdimensi dua adalah pengambilan salah satu subscript, misalnya subscript baris untuk tetap atau konstan, sementara subscript yang satunya lagi kita ubah-ubah sepanjang rangenya. Notasi yang umum digunakan adalah notasi * (asterisk) bagi subscript yang berubah-ubah nilainya tersebut.
Contohnya, penulisan B(*,4) menyatakan semua elemen pada kolom ke-4, yakni (B(1,4),B(2,4), B(3,4) ...., B(M,4)), seperti terlihat pada Gambar berikut
1 |
2 |
3 |
4 |
n |
||
1 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
|
|
|
|
|
|
cros section array
Dengan mudah dapat dimengerti bahwa B(11,*) menunjukkan semua elemen pada baris ke-11.
Transpose dari suatu array dimensi dua adalah penulisan baris menjadi kolom (kolom menjadi baris) dari suatu array. Jadi transpose dari array berorder M x N adalah array berorder N x M. Transpose dari array B dinotasikan sebagai BT. Berdasarkan definisi, maka jelas B(I,J) =BT(J,I). Contohnya B(3,5) = BT(5,3).
Pengertian di atas dapat kita perluas untuk array dimensi tiga, dimensi empat, sampai dimensi N.
Array dimensi N kita tulis sebagai :
A(L1:U1, L2:U2,
…, LN: UN) = (A(I1, I2,
…, IN))
dengan Lk <= Ik <= Uk,
untuk setiap k = 1, 2, …, N.Banyaknya elemen dari array A tersebut adalah :
PI(Uk - Lk + 1) = (U1-L1+1) *
(U2 – L2+1) … * (UN -LN
+ 1)
Contoh array dimensi tiga adalah penyajian data mengenai banyaknya
mahasiswa dari-20 perguruan tinggi di Jakarta, berdasarkan tingkat
(tingkat 1, 2 sampai dengan 5), dan jenis kelamin (pria atau wanita).
Misalnya array tersebut dinamakan MHS. Ambil sebagai subscript pertama, tingkat : I = 1, 2,...,5; subscript kedua, jenis kelamin (pria = 1, wanita = 2): J = 1,2, dan subscript ke-3, Perguruan Tinggi adalah K = 1,2,...,20. Jadi MHS(4,2,17) menyatakan jumlah mahasiswa tingkat 4, wanita, dari perguruan tinggi ke 17.
…
gambar array berdimensi 3
…
Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array dimensi dua. Misalnya MHS(4,*,17) menunjukkan jumlah mahasiswa tingkat 4 dari perguruan tinggi 17 (masing-masing untuk pria serta wanita). MHS(*,*,3) menunjukkan jumlah mahasiswa untuk masing-masing tingkat, pria serta wanita, dari perguruan tinggi 3.
–
bersambung