• Tidak ada hasil yang ditemukan

Algoritma & Struktur Data. Array. Oleh : Nur Hayatin, M.Kom

N/A
N/A
Protected

Academic year: 2021

Membagikan "Algoritma & Struktur Data. Array. Oleh : Nur Hayatin, M.Kom"

Copied!
55
0
0

Teks penuh

(1)

Array

Oleh : Nur Hayatin, M.Kom

Teknik Informatika Universitas Muhammadiyah Malang 2016

(2)

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

(3)

Pendahuluan

• Pemilihan algoritma dan struktur data yang

tepat  peningkatan performansi program

• Performansi program :

– Time complexity

– Space complexity

(4)

Pendahuluan

• Algoritma :

– Pencarian (searching)

– Pengurutan (sorting)

• Struktur Data :

– Array

– Linked list

– Stack

– Queue

– Binary Tree

– Graf

(5)

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

(6)

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

(7)

Struktur Data

• Struktur data adalah cara penyimpanan,

penyusunan dan pengaturan data di dalam

media penyimpanan komputer sehingga data

tersebut dapat digunakan secara efisien.

(8)

Jenis Struktur Data

• Struktur Data Linier :

– Array

– Linked list

– Stack

– Queue

• Struktur Data Hirarki :

– Tree

– Graf

(9)

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)

(10)

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.

(11)

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.

(12)

ARRAY

(13)

Outline

• Definisi Array

• Operasi dasar Array

(14)

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

(15)

Deklarasi

• Contoh :

int grade[] = new int[6];

atau

(16)

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;

(17)

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

(18)

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] ); }

} }

(19)
(20)
(21)
(22)

Create dua dimensional array

(23)
(24)
(25)
(26)

Hasil running

• Length pada Indeks ke-0 =3

• Length pada Indeks ke-1 =5

• Finished executing

(27)
(28)

Hasil running

• Elemen pd Dimensi ke-1 = 2

• Elemen pd Dimensi ke-2 = 3

• Elemen pd Dimensi ke-3 = 4

• Finished executing

(29)

Operasi Dasar Array

• Meliputi :

– Pengecekan array kosong (empty)

– Pengecekan array terisi penuh (full)

– Penambahan elemen

– Penghapusan elemen

– Pencarian elemen pada array

(30)

Operasi

Add

add(0,23)

(31)

Operasi

Remove

a b c d e

size = 5

a g b c d e

size = 6

remove(1)

(32)

Operasi

get

a b c d e

0 1 2 3 4

get(2)?

get(5)?

(33)

Operasi

indexOf

a b c d e

0 1 2 3 4

indexOf(e)?

indexOf(b)?

indexOf(s)?

(34)

Increasing Array Length

Length of array

element[]

is

6

.

a b c d e f

newArray = new Object[15];

(35)

Increasing Array Length

Now copy elements from old array to new one.

a b c d e f

(36)

Increasing Array Length

Finally, rename new array.

element = newArray;

element.length = 15

a b c d e f

(37)

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

(38)

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)

(39)

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 }

(40)

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();

}

(41)

Implementing An Interface

public class ArrayLinearList implements LinearList {

// code for all LinearList methods must be provided here }

(42)

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(); }

(43)

Extending A Java Class

public class ArrayLinearList extends LinearListAsAbstractClass {

// code for all abstract classes must come here }

(44)
(45)

Class ArrayLinearList

import java.util.*; import utilities.*;

public class ArrayLinearList implements LinearList {

protected Object [] element; // array of elements

(46)

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

,

(47)

Constructor

public ArrayLinearList(int initialCapacity) {

if (initialCapacity < 1)

throw new IllegalArgumentException ("initialCapacity must be >= 1");

element = new Object [initialCapacity]; }

public ArrayLinearList() {

this(10); }

(48)

Method

isEmpty() dan size()

public boolean isEmpty() {

return size == 0; }

public int size() {

return size; }

(49)

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]; }

(50)

Method

indexOf()

public int indexOf(Object theElement) {

for (int i = 0; i < size; i++)

if (element[i].equals(theElement)) return i;

return -1; }

(51)

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; }

(52)

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++;

(53)

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; } }

(54)

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.

(55)

Latihan

4. Diketahui L=(a,b,c,d). L adalah sebuah array

linier list. 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)

Referensi

Dokumen terkait