BAB1
ARRAY
‘Array adalah sekelompok variabel. Susunan jenis apa pun dapat
dibuat dan mungkin memilki satu atau beberapa dimensi. Elemen spesifik
Salam array diakses olen indeksnya. Array menawarkan cara yang
nyaman untuk mengelompokkan informasi terkait
4. Array satu dimens!
Bentuk umum satu dimensi adalah
type var-namef ];
contoh
int month_daysf];
Bentuk umum baru yang berlaku untuk array satu dimensi sebagai
berikut:
array-var = new type [size];
contoh
month_days = new int[12];
ex program :
class Array {
public static void main(String argsf]) {
int month_days[];
month_days = new int[12];
month_days[0] = 31;
month_days[1] = 28;
month_days[2] = 31;
month_days[3] = 30;
month_days[4] = 31;
month_days[5] = 30;
month_days[6] = 31;month_days{7] = 31;
month_days(8] = 30;
month_days(9] = 31;
month_days(10] = 30;
month_days{11] =
ih;
‘System. out printin("April has " + month_days[3] +" days.");
2, Array dua dimensi
berikut ini mendeklarasikan variabel array dua dimensi :
int twoD II] = new int(4]{5};
ex program
class TwoDArray {
public static void main(String argsf]) {
int twoD[][I= new int[4]{5};
inti, j, k = 0;
for(i=0; i<4; i++)
forl)=0; j arr)
Iiswap elements
for(int j=
temp = arr[j-1];
arrj-1] = arr{j];
arr{j] = temp;}
public static void main(String{] args) {
int arr{] ={3,60,35,2,45,320,5};
System.out printin("Array Before Bubble Sort");
for(int i=0; |< arr.tength; i++){
System out print(arr{i] +");
}
System. out printin();
bubbleSort(arn);//sorting array elements using bubble sort
System.out printin(‘Array After Bubble Sort’);
for(int i=
; 1 < arrlength; i++)
System.out print(arr{i] + "
2. Selection sort
Selection Sort ialah metode algoritma untuk mencari nilai yang
paling kecil(Jika Ascending) atau nilai yang paling besar(Jika Descending)
di urutan Data berikutnya
Ex program
public class SelectionSontExample {
public static void selectionSort(int{] arr)
for (int i = 0; i < arr.length - 1; i+)int index = i;
for (int j =i + 1; j < arr.length; j++){
if (arr{j) < arrfindex)){
index = j;//searching for lowest index
}
int smallerNumber = arrindex};
arrfindex] = arr{i]:
arr{i] = smallerNumber;
public static void main(String af]){
int] arr1 = {9,14,3,2,43,11,58,22};
System.out.printin("Before Selection Sort"),
for(int i:arr1){
System. out. print(i+" ");
}
System.out.printin();
selectionSort(arr1);//sorting array using selection sort
System.out.printin("After Selection Sort’),
for(int i:arr1){
System.out.print(i+" ");3. Insertion Sort
Insertion Sort adalah salah satu algoritma sederhana untuk
pengurutan data yang acak agar menjadi data yang terurut.
Ex program :
public class InsertionSortExample {
public static void insertionSort(int array(]) {
int n = array.length;
for (int j= 4; j -1) && ( array [i] > key )) {
array [i#1] = array [i];
in
}
array[i+ 1] = key;
public static void main(String al]}{
int{] arrt = {9,14,3,2,43,11,58,22};
System.out printin("Before Insertion Sort’);
for(int i:arrt){
System.out print(i+"
}
System.out.printin();
Struktur DataStruktur Data
insertionSort(arr1);//sorting array using insertion sort
System, out.printin("After Insertion Sort");
for(int iarrt){
System.out.print(i+" ");
1" secara descending dengan
Urutkan bilangan “7,4,9,2,8,-3,
menggunakan Selection sort !
Urutkan bilangan "7,4,9,2,8,-3,5,-1" secara ascending dengan
menggunakan bubble sort !BAB III
Searching
Pencarian (searching) merupakan suatu pekerjaan yang sering
dikerjakan dalam kehidupan sehari — hari.Dalam ilmu komputer terdapat
bermacam - macam algoritma untuk metoda pencarian (searching)
Beberapa metoda pencarian adalah metoda pencarian linier (Linear /
Sequential Search), pencarian biner (Binary Search) dan pencarian
interpolasi (Interpolation Search)
1. Linear Search
Pencarian Linier atau Pencarian Sekuensial adalah pencarian data
secara linier (garis lurus), artinya adalah pencarian dilakukan secara
teratur (secara sekuensial) dari awal sampai akhir data (atau bisa juga
dari akhir ke awal data).
Ex program
public class LinearSearchExample{
public static int linearSearch(int{] arr, int key)
for(int i=O;i();
for(Integer i : intArr){
stack.push(i);
}
‘System.out-printin("Non-Empty stack :" + stack);
2. Queue
Queue adalah bentuk lain dari konsep implementasi linked list.
Berbeda dengan Stack, yang menerapkan konsep LIFO (Last In First
Out), Queue justru mempunyai konsep yang berbeda yakni FIFO (First In
First Out). Setiap data yang pertama kali masuk, dialah yang akan keluar
duluan.
Ex program
import java. util.*;
Sn | |
iruktur Data 11public class ArrayToQueue {
public static void main(Stringl] args) {
String numsf] = {“one", "two", "three", "four", "five"};
Queue queue = new LinkedList<>();
Collections. addAll(queue, nums);
System.out.printin(queue);
Struktur Data |BABV
Linked list
linear dari data, yang disebut
kan menunjuk pada node lain
didefinisikan pula sebagai
Linked List merupakan koleksi
sebagai nodes, dimana setiap node al
melalui sebuah pointer. Linked List dapat
kumpulan nodes yang merepresentasikan sebuah sequence.
4. Simple linked list
Ex program:
import java.util ArrayList;
import java.util LinkedList;
import java.util.List;
public class CreateLinkedListExample {
public static void main(Stringl] args) {
1! Creating a LinkedList
LinkedList friends = new LinkedList<>();
1 Adding new elements to the end of the LinkedList using add()
method,
friends.add("Rajeev’)
friends.add("John");
friends.add("David");
friends.add("Chris");
System.out.printin("Initial LinkedList : " + friends);
Struktur Data
ais11 Adding an element at the specified position in the LinkedList
friends.add(3, "Lisa;
ystem.out printin("After add(3, \'Lisal") :" + friends);
I Adding an element at the beginning of the LinkedList
friends.addFirst(’Steve");
system out printin(’After addFirst(V'Steve\’) :" + friends);
I Adding an element at the end of the LinkedList (This method is
equivalent to the add() method)
friends.addLast("Jennifer");
‘System.out printin("After addLast(\"Jennifen”) : "+ friends);
11 Adding all the elements from an existing collection to the end of the
LinkedList
List familyFriends = new ArrayList<>(),
familyFriends.add("Jesse");
familyFriends.add("Walt’);
friends.addAll(familyFriends);
System.out.printin("After addAll(familyFriends) : " + friends);
2. Circular Linked List.
Ex program
public class CircularLinkedList {
Struktur Data [14]public int size =0;
public Node head=null;
public Node tail=null;
Madd a new node at the start of the linked list
public void addNodeatstart(int data){
‘System.out printin("Adding node " + data +" at start’);
Node n = new Node(data);
n.next = head;
Jelse{
Node temp = head;
n.next = temp;
head = n;
tail. next = head:
}
size++;
public void addNodeAtEnd(int data){
if(size==0){
addNodeatStart(data);
jelset
Node n = new Node(data);
tail. next =n;
uktur Data [15]tail=n,
tail next = head;
size++;
}
System.out.printin("\nNode " + data +
list");
}
"is added at the end of the
public void deleteNodeFromStart(){
if(size==0){
System. out.printin("\nList is Empty");
Jelsef
System.out printin("\ndeleting node " + head.data +" from start’);
head = head.next;
tail.next=head;
size;
public int elementAt(int index){
if(index>sizey{
return -1;
a)
Node n = head;
while(index-1!=0){
n=n.next;
index--;
Struktur Data
e. 16Struktur Data
}
return n.data;
print the linked list
public void print(){
System.out.print("Circular Linked List:");
Node temp = head;
if(size<=0){
System.out print(’List is empty”);
Jelsef
do{
System. out.print(” " + temp.data);
temp = temp.next;
}
while(temp!=head);
}
System.out.printin);
liget Size
public int getSize({
return size;
public static void main(String[] args) {
CircularLinkedList c = new CircularLinkedList();c.addNodeatstart(3);
c.addNodeatstart(2);
c.addNodeAtStart(1);
c.print();
c.deleteNodeFromStart();
e.print();
c.addNodeAtEnd(4);
coprint();
‘System. out printin(’Size of linked list: "+ c.getSize());
System.out printin(’Element at 2nd position: "+ c.elementAt(2));
class Node{
int data;
Node next
Public Node(int data){
this.data = data;
Struktur Data falBAB VI
Iterator
Iterator adalah salah satu interface yang tersedia di dalam library
Java, yang berlokasi di java.util package. Iterator digunakan untuk
mengakses dan menampilkan nilai beserta tambahan method lain yang
didefinisikan di dalam interface Iterator.
Ex program :
import java.util. ArrayList;
import java.util. Iterator;
import java.util List;
public class latinan_java {
public static void main(Stringf] args)
J/Membuat Instance/Objek hewan Dari ArrayList
List hewan = new ArrayList<>(),
1]Menambahkan Data atau Nilai pada Objek hewan
hewan.add("Kucing");
hewan.add("Kambing").
hewan.add("Domba’);
hewan.add("Ayam");
hewan.add("Sapi");
hewan.add("Unta");
hewan.add("Komodo");
hewan.add("Singa");
hewan.add("Macan");
Struktur Datahewan.add("Jerapah")
r
*Menginisialisasi Method Iterator yang Terdapat
*Pada Objek hewan dari Collection ArrayList
ql
Iterator iterator = hewan .iterator();
iMengecek Iterator Apakah Mempunyai Elemen Selanjutnya atau
Tidak
while(iterator. hasNext()){
idika lyalTrue Maka Iterator Akan Mengambil Nilai Selanjutnya
‘System.out.printin(iterator.next());
}
Memodifikasi Nilai Menggunakan Interface ListIterator.
Ex program
1/Package Yang Digunakan Untuk Membuat List/ArrayList
import java.util. ArrayList;
import java.util List;
11Package Yang Digunakan Untuk Membuat Iterator/Listlterator
import java.util. Iterator,
import java.util Listlterator;
ruktur Data acapublic class latihan_java2 {
public static void main(String[] args){
iMembuat Instance/Objek angka Dari ArrayList
List angka = new ArrayList<>();
Menambahkan Data atau Nilai pada Objek angka
angka.add(672);
angka.add(324);
angka.add(902);
angka.add(160);
angka.add(238);
angka.add(539);
angka.add(357);
//Menginisialisasi Listlterator pada objek angka
Listlterator listlterator = angka listlterator();
JIMengecek Listlterator Apakah Mempunyai Elemen Selanjutnya atau
Tidak
while(listlterator.hasNext()){
int element = listlterator. next();
HMemodifikasi Nilai, Sebelum di Iterasi
listIterator.set(element+1000);
Struktuy Data | a
i= NILAI Yang SUDAH DIMODIFIKASI
IMenginisialisasi Iterator Pada objek
angka
Iterator iterator =
angka iterator():
while(iterator. hasNext())_
/Melakukan Iterasi atau Perulangan
Object element = iterator: next();
System.out, Printin("Nilai: “+element)
HMencetak Nilai Yang Sudah Dimodifikasi
System.out printin("==== MENGURUTKAN NILAI
TERBALIK ")s
SECARA
WMengurutkan Nilai Cecara Terbalik
while listIterator hasPrevious()){
Object element = listiterator previous();
System. out.printin("Nilai: "+element);BAB Vil
Binary Tree
adalah sebuah pohon struktur data di
pohon biner (binary tree)
banyak dua anak
mana setiap simpul memiliki paling
4, Mencari Maximum nila
Catatan : menggunakan 2 class.
Ex program
class Node {
int data;
Node left, right;
public Node(int data)
{
this.data = data,
left = right = null;
de
class BinaryTree {
Node root;
i Returns the max value in a binary tree
static int findMax(Node node)
{
if (node == null)
retum Integer. MIN_VALUE;
Struktur Data
_ aint res = node.data;
int res = findMax(node.left);
int rres = findMax(node. right);
if (Ires > res)
res = Ires;
if (Tres > res)
res = rres;
return res;
I" Driver program to test above functions */
public static void main(String args{])
it
BinaryTree tree = new BinaryTree();
tree.root = new Node(2);
tree.root left = new Node(7);
tree.root right = new Node(5);
tree.root left right = new Node(6);
tree.root.left right left = new Node(1);
tree.root.left.right right = new Node(11);
tree.root.right right = new Node(9);
tree.root.right.right.left = new Node(4);
System.out printin("Maximum element is " +
tree.findMax(tree.root));2. Mencari minmum nilai
Ex program :
Ex program
Note : Class pertama
class Node {
int data,
Node left, right:
public Node(int data)
{
this.data = data;
left = right = null;
}
Note : Class kedua
class BinaryTree {
Node root;
11 Retumns the max value in a binary tree
static int findMin(Node node)
{
if (node == null)
return Integer. MAX_VALUE;
int res = node.data;
int Ires = findMin(node. left);
Struktur Dataint res = findMin(node. right);
if (Ires < res)
res =Ires;
if (res < res)
res = res;
retum res;
>* Driver program to test above functions “7
public static void main(String rast)
{
.¢ tree = new BinaryTree();
BinaryTre
tree.root = new Node(2);
tree root left = new Node(7);
tree root right = new Node(5);
tree.root left.right = new Node(6);
tree.root left right.left = new Node(1);
tree root left-right right = new Node(11);
tree.root right right = new Node(9);
tree.root right right left = new Node(4);
System.out printin(’Minimum element is " +
tree findMin(tree.root));
Struktur D
J altur DataBAB VIII
Binary Tree Traversals
binary tree traversal adalah proses mengunjung) node tepat cat
kali dan tiap node hanya boleh memiliki maksimal 2 subtree yang diseb
sebagai sub pohon Kir (left subtree) dan sub pohon kanan (right subtree).
4. Postorder
bilaksanakan dengan jalan melakukan kunjungan ke subtree Kin, lalu
ke subtree Kanan, dan selanjutnya mencetak isi node yang dikunjung!
Catatan : menggunakan 2 class.
Ex program
class Node
{
int key;
Node leff, right;
public Node(int item)
{
key = iter;
left = right = null;
}
class BinaryTree
if
1/ Root of Binary Tree
Node root;
BinaryTree()
5
kur Data-up" postorder traversal.
void prinPostorder Node node)
4
itinode == 90")
return
IN first recur ON left subtree
orintPostorder(node eR:
11then recur on right subtree
printPostorder(node.ight);
1/now deal with the node
‘System.out print(node.key +"),
}
// Wrappers over above recursive functions
void printPostorder() { _ printPostorder(root); a
public static void main(String[] args)
{
BinaryTree tree = new BinaryTree();
tree.root = new Node(1);
tree.root.left = new Node(2);{ree root right = new Node(3):
tree root left.left = new Node(4):
tree,root.left.right = new Node(5),
binary tree is");
System.out. printin("\nPostorder traversal of
tree.printPostorder();
2. Inorder
alan melakuken kunjungan ke subtree kiri,
ke subtree
Dilaksanakan dengan j
melakukan kunjungan
mencetak isi node yang dikunjungi, lalu
kanan
Catatan : menggunakan 2 class.
Ex program
class Node
{
int key:
Node left, right;
public Node(int item)
{
key = item,
left = right = null;
}
class BinaryTree
i
1! Root of Binary Tree
2sNode root;
BinaryTree()
{
root = null;
}
I Given a binary tree, print its nodes in inorder“!
void printinorder(Node node)
{
if (node == null)
return;
I" first recur on left child */
printinorder(node. left);
i then print the data of node */
‘System.out print(node.key +");
/* now recur on right child */
printInorder(node. right);
y
void printinorder() { — printInorder(root); }
1 Driver method
public static void main(Stringl] args)
{
BinaryTree tree = new BinaryTree();
tree.root = new Node(1);
Sruktur Data