Array
Oleh : Nur Hayatin, M.Kom
Teknik Informatika Universitas Muhammadiyah Malang 2016
About.. [U’r Lecturer]
• Nama : Nur Hayatin, M.Kom
• Email :
[email protected]
• Research Interest [not limited to] :
Information Retrieval
Search Engine Technology
Social Media Analysis
Pendahuluan
• Pemilihan algoritma dan struktur data yang
tepat peningkatan performansi program
• Performansi program :
– Time complexity
– Space complexity
Pendahuluan
• Algoritma :
– Pencarian (searching)
– Pengurutan (sorting)
• Struktur Data :
– Array
– Linked list
– Stack
– Queue
– Binary Tree
– Graf
Referensi
• Nana Ramadiyanti, Pemrograman Lanjut :
Array, Pens-ITS
• Sahni, Sartaj, “Data Structures, Algorithms,
and Applications in Java”. McGraw-Hill
International Editions.
• L.N. Harnaningrum, Struktur Data
menggunakan Java, Graha ilmu, 2010
• Siswanto, Algoritma & Struktur Data Linier,
Graha Ilmu, 2010
Catatan
• Semua source code yang digunakan sebagai
contoh dan tugas dalam perkuliahan ini
menggunakan JAVA.
• Materi dasar JAVA yang dibutuhkan :
– Abstraksi (class abstrak maupun interface)
– Override method
Struktur Data
• Struktur data adalah cara penyimpanan,
penyusunan dan pengaturan data di dalam
media penyimpanan komputer sehingga data
tersebut dapat digunakan secara efisien.
Jenis Struktur Data
• Struktur Data Linier :
– Array
– Linked list
– Stack
– Queue
• Struktur Data Hirarki :
– Tree
– Graf
Struktur Data
• Cara memilih struktur data yang tepat memahami
karakteristik struktur data.
• Karakteristik struktur data, meliputi :
– mekanisme pengaturan data dalam media penyimpanan computer
– programming effort (kompleksitas)
Struktur Data
• Beberapa pertanyaan terkait dengan
karakteristik struktur data, a.n :
– Bagaimana mekanisme penambahan data (dari
depan/belakang/tengah)?
– Apakah data bisa dihapus?
– Bagaimana mekanisme pemrosesan data (harus
terurut atau dapat diakses secara random)?
Setiap struktur data memiliki kelemahan dan
kelebihan.
Istilah
• Istilah-istilah yang digunakan dalam struktur data :
– Elemen = data item/obyek pada list – Indeks
– Node – Pointer
– List = elemen-elemen yang susunannya terurut. – Empty = tidak ada elemen didalam list.
– Size = jumlah elemen yang ada pada list
– Head = awal dari list, elemen terdepan pada list. – Tail = akhir dari list, elemen terakhir pada list.
ARRAY
Outline
• Definisi Array
• Operasi dasar Array
Definisi
• Sebuah tipe data yang mampu meyimpan data/variabel dengan nama dan tipe yang sama.
• Contoh : nilai grade dari 6 mahasiswa
• Keterangan
– Terdiri dari 6 elemen
– Elemen pertama pada index ke-0 elemen terakhir pada index ke-5
• Array pada java selalu diawali dengan index ke-0!!!!!
0 1 2 3 4 5 Index
Deklarasi
• Contoh :
int grade[] = new int[6];
atau
Inisialisasi
• Contoh :
int grade[] = {5,8,9,7,6,7}; atau :
int grade[] = new int[6]; grade[0] = 5; grade[1] = 8; grade[2] = 9; grade[3] = 7; grade[4] = 6; grade[5] = 7;
Pengaksesan Elemen
• x = grade[5];
mengakses elemen grade pada index ke-5 yang akan diisikan ke variabel x.
• System.out.print(grade[0]);
mengakses sekaligus menampilkan elemen grade pada index ke-0.
• Elemen array yang dapat diakses dimulai dari index 0
sampai elemen.length()-1
Contoh Program
public class ArraySample {
public static void main( String[] args ){ int[] ages = new int[100];
for( int i=0; i<ages.length; i++ ){ System.out.print( ages[i] ); }
} }
Create dua dimensional array
Hasil running
• Length pada Indeks ke-0 =3
• Length pada Indeks ke-1 =5
• Finished executing
Hasil running
• Elemen pd Dimensi ke-1 = 2
• Elemen pd Dimensi ke-2 = 3
• Elemen pd Dimensi ke-3 = 4
• Finished executing
Operasi Dasar Array
• Meliputi :
– Pengecekan array kosong (empty)
– Pengecekan array terisi penuh (full)
– Penambahan elemen
– Penghapusan elemen
– Pencarian elemen pada array
Operasi
Add
add(0,23)
Operasi
Remove
a b c d esize = 5
a g b c d esize = 6
remove(1)
Operasi
get
a b c d e
0 1 2 3 4
get(2)?
get(5)?
Operasi
indexOf
a b c d e0 1 2 3 4
indexOf(e)?
indexOf(b)?
indexOf(s)?
Increasing Array Length
Length of array
element[]
is
6
.
a b c d e f
newArray = new Object[15];
Increasing Array Length
Now copy elements from old array to new one.
a b c d e f
Increasing Array Length
Finally, rename new array.
element = newArray;
element.length = 15
a b c d e f
Altogether Now
// create a new array of proper length and data
type
Object [] newArray = new Object [newLength];
// copy all elements from old array into new one
System.arraycopy(element, 0, newArray, 0,
element.length);
// rename array
Latihan
Diketahui L=(a,b,c,d). L adalah sebuah array.
Tentukan hasil yang didapatkan ketika dilakukan
perintah berikut ini :
a) isEmpty()
b) size()
c) get(0), get(2),get(6),get(-3)
d) indexOf(a), indexOf(c), indexOf(q)
e) remove(0), remove(2), remove(3)
f) add(0,e), add(2,f), add(3,g), add(4,h), add(6,h),
add(-3,h)
Linear List Abstract Data Type
AbstractDataType LinearList {
instances
ordered finite collections of zero or more elements
operations
isEmpty(): mengembalikan nilai true jika kosong dan sebaliknya. size(): mengembalikan jumlah elemen pada list
get(index): mengembalikan elemen sesuai index yang dimasukkan
indexOf(x): mengembalikan nilai index dari elemen x yang dimasukkan, -1 jika elemen tidak ditemukan
remove(index): menghapus elemen sesuai index yang dimasukkan add(theIndex, x): menambah elemen x pada index yang ditentukan output(): menampilkan semua elemen pada list dari kiri ke kanan }
Linear List as Java Interface
public interface
LinearList
{
public boolean
isEmpty();
public int
size();
public Object
get(int index);
public int
indexOf(Object elem);
public Object
remove(int index);
public void
add(int index, Object obj);
public String
toString();
}
Implementing An Interface
public class ArrayLinearList implements LinearList {
// code for all LinearList methods must be provided here }
Linear List As Java Abstract Class
public abstract class LinearListAsAbstractClass {
public abstract boolean isEmpty();
public abstract int size();
public abstract Object get(int index);
public abstract int indexOf(Object theElement);
public abstract Object remove(int index);
public abstract void add(int index, Object theElement);
public abstract String toString(); }
Extending A Java Class
public class ArrayLinearList extends LinearListAsAbstractClass {
// code for all abstract classes must come here }
Class ArrayLinearList
import java.util.*; import utilities.*;
public class ArrayLinearList implements LinearList {
protected Object [] element; // array of elements
Data Type Of Array element[]
Data type of list elements is unknown.
Define
element[]
to be of data type
Object
.
Cannot put elements of primitive data types (
int
,
Constructor
public ArrayLinearList(int initialCapacity) {
if (initialCapacity < 1)
throw new IllegalArgumentException ("initialCapacity must be >= 1");
element = new Object [initialCapacity]; }
public ArrayLinearList() {
this(10); }
Method
isEmpty() dan size()
public boolean isEmpty() {
return size == 0; }
public int size() {
return size; }
Method
get()
void checkIndex(int index) {
if (index < 0 || index >= size)
throw new IndexOutOfBoundsException ("index = " + index + " size = " + size); }
public Object get(int index) {
checkIndex(index);
return element[index]; }
Method
indexOf()
public int indexOf(Object theElement) {
for (int i = 0; i < size; i++)
if (element[i].equals(theElement)) return i;
return -1; }
Method
remove
()public Object remove(int index) {
checkIndex(index);
Object removedElement = element[index]; for (int i = index + 1; i < size; i++)
element[i-1] = element[i]; element[--size] = null;
return removedElement; }
Method
add
()
public void add(int index, Object theElement) {
checkIndex(index);
if (size == element.length)
element = ChangeArrayLength.changeLength1D(element, 2 * size); for (int i = size - 1; i >= index; i--)
element[i + 1] = element[i]; element[index] = theElement; size++;
Latihan
2. Buatlah sebuah array yang memenuhi spesifikasi yang ada pada tabel
disamping. Petunjuk :
• Buatlah class Bank yang memiliki dua variabel array tsb.
• Berikan inisialisasi pada variabel antrian dengan angka terurut mulai dari 1. sedangkan inisialisasi variabel nasabah dengan obyek yg mengacu pada class Customer.
• Berikan nilai saldo pada tiap objek yang ada dengan memanggil method setSaldo() menggunakan nasabah[0]. • Lakukan pengaksesan untuk setiap
elemen pada array antrian. • Lakukan pengaksesan method
getSaldo().
Variabel Array Tipe data Besar Array
nasabah Customer 3
antrian int 3
Class Customer{
double saldo;
void setSaldo(double dana) { saldo = saldo+dana; } double getSaldo() { return saldo; } }
Latihan
3. Buatlah sebuah array dua dimensi untuk
menyimpan sebuah kata bahasa indonesia beserta
kata padanan bahasa inggrisnya.
petunjuk :
– Kata yg disimpan diberikan 5 kata.
– Element 1 digunakan untuk menyimpan kata bahasa indonesia
– Element 2 digunakan untuk menyimpan kata bahasa inggris
– Cobalah mengakses kata bahasa inggris dari kata bahasa indonesia yang dipilih pleh user.