Anda di halaman 1dari 14

SISTEM BERKAS

ALGORITMA UNTUK UNTUK METODE PENGURUTAN REKAMAN

OLEH :

I MADE DWI JAYA MALEH (DBC 118 020)

FERNATA FIRDAUS PURBA (DBC 117 094)

HENDRA YULIANTO (DBC 117 002)

DOSEN PENGAJAR :
NI PUTU EKA MERLIANA, ST., MT

JURUSAN TEKNIK INFORMATIKA FAKULTAS


TEKNIK
UNIVERSITAS PALANGKA RAYA
2020
Pengurutan Gelembung (Bubble Sort):

Bubble sort merupakan cara pengurutan yang sederhana. Cara kerjanya adalah
mengulang proses pembandingan antara tiap-tiap elemen array dan menukarnya
apabila urutannya salah. Pembandingan elemen-elemen ini akan terus diulang
hingga tidak perlu dilakukan penukaran lagi.

Algoritma Babble Sort C++ :

1. i <- 1
2. selama (i < N-1) kerjakan baris 3 s/d 7
3. j <- N-1
4. selama (j>=i) kerjakan baris 5 s/d 6
5. jika (Data[j-1]>Data[j]) maka tukar Data[j-1] dengan Data[j]
6. j <- j - 1 ;
7. i <- i + 1 ;

Codiung bubbleshort :

1. using namespace std;


2.
3. int main()
4.
5. {
6. int data[50];
7. int i, j, k, tmp, jumlah=0;
8. cout<<"UAS SISTEM BERKAS\n";
9. cout<<"PROGRAM PENGURUTAN BILANGAN BUBBLE SORT\n\n";
10. cout<<"Masukkan jumlah bilangan : "; cin>>k;
11. for(i=0; i<k; i++)
12. {
13. cout<<"Masukkan Angka ke "<<(i+1)<<" : ";
14. cin>>data[i];
15. if(data[i]%2==0)
16. {jumlah+=data[i];}
17. }
18. cout<<"\nData sebelum diurutkan : "<<endl;
19. for(i=0; i<k; i++)
20. {
21. cout<<data[i]<<" ";
22. }
23. cout<<endl;
24.
25. for( i=0;i<k;i++)
26. {
27. for(j=i+1;j<k;j++)
28. {
29. if(data[i]>data[j])
30. {
31. tmp=data[i];
32. data[i]=data[j];
33. data[j]=tmp;
34. }
35. }
36. }
37.
38. cout<<"\nData setelah diurutkan : "<<endl;
39. for(i=0; i<k; i++)
40. {
41. {
42. cout<<data[i]<<" ";
43. }
44. }
45. return 0;
46.
47. }

2. Input dan Output dari program yang telah dibuat (skor 35)

Dari hasil program, source code algoritma bubble sort tersebut berhasil dapat
dijalankan tanpa ada error dan menampilkan hasil pengurutan yang sesuai.
berikut ada langkah-langkah proses pengurutan yang dilakukan program :

PROSES SORTING ARRAY [20, 60, 30, 40, 25, 35, 22, 50, 55, 11]

Putaran ke 1 : [20 60 30 40 25 35 22 50 55 11]


Proses ke 1 [20 60 30 40 25 35 22 50 55 11]
Proses ke 2 [20 30 60 40 25 35 22 50 55 11]
Proses ke 3 [20 30 40 60 25 35 22 50 55 11]
Proses ke 4 [20 30 40 25 60 35 22 50 55 11]
Proses ke 5 [20 30 40 25 35 60 22 50 55 11]
Proses ke 6 [20 30 40 25 35 22 60 50 55 11]
Proses ke 7 [20 30 40 25 35 22 50 60 55 11]
Proses ke 8 [20 30 40 25 35 22 50 55 60 11]
Proses ke 9 [20 30 40 25 35 22 50 55 11 60]

Putaran ke 2 : [20 30 40 25 35 22 50 55 11 60]


Proses ke 1 [20 30 40 25 35 22 50 55 11 60]
Proses ke 2 [20 30 40 25 35 22 50 55 11 60]
Proses ke 3 [20 30 25 40 35 22 50 55 11 60]
Proses ke 4 [20 30 25 35 40 22 50 55 11 60]
Proses ke 5 [20 30 25 35 22 40 50 55 11 60]
Proses ke 6 [20 30 25 35 22 40 50 55 11 60]
Proses ke 7 [20 30 25 35 22 40 50 55 11 60]
Proses ke 8 [20 30 25 35 22 40 50 11 55 60]
Proses ke 9 [20 30 25 35 22 40 50 11 55 60]

Putaran ke 3 : [20 30 25 35 22 40 50 11 55 60]


Proses ke 1 [20 30 25 35 22 40 50 11 55 60]
Proses ke 2 [20 25 30 35 22 40 50 11 55 60]
Proses ke 3 [20 25 30 35 22 40 50 11 55 60]
Proses ke 4 [20 25 30 22 35 40 50 11 55 60]
Proses ke 5 [20 25 30 22 35 40 50 11 55 60]
Proses ke 6 [20 25 30 22 35 40 50 11 55 60]
Proses ke 7 [20 25 30 22 35 40 11 50 55 60]
Proses ke 8 [20 25 30 22 35 40 11 50 55 60]
Proses ke 9 [20 25 30 22 35 40 11 50 55 60]

Putaran ke 4 : [20 25 30 22 35 40 11 50 55 60]


Proses ke 1 [20 25 30 22 35 40 11 50 55 60]
Proses ke 2 [20 25 30 22 35 40 11 50 55 60]
Proses ke 3 [20 25 22 30 35 40 11 50 55 60]
Proses ke 4 [20 25 22 30 35 40 11 50 55 60]
Proses ke 5 [20 25 22 30 35 40 11 50 55 60]
Proses ke 6 [20 25 22 30 35 11 40 50 55 60]
Proses ke 7 [20 25 22 30 35 11 40 50 55 60]
Proses ke 8 [20 25 22 30 35 11 40 50 55 60]
Proses ke 9 [20 25 22 30 35 11 40 50 55 60]

Putaran ke 5 : [20 25 22 30 35 11 40 50 55 60]


Proses ke 1 [20 25 22 30 35 11 40 50 55 60]
Proses ke 2 [20 22 25 30 35 11 40 50 55 60]
Proses ke 3 [20 22 25 30 35 11 40 50 55 60]
Proses ke 4 [20 22 25 30 35 11 40 50 55 60]
Proses ke 5 [20 22 25 30 11 35 40 50 55 60]
Proses ke 6 [20 22 25 30 11 35 40 50 55 60]
Proses ke 7 [20 22 25 30 11 35 40 50 55 60]
Proses ke 8 [20 22 25 30 11 35 40 50 55 60]
Proses ke 9 [20 22 25 30 11 35 40 50 55 60]

Putaran ke 6 : [20 22 25 30 11 35 40 50 55 60]


Proses ke 1 [20 22 25 30 11 35 40 50 55 60]
Proses ke 2 [20 22 25 30 11 35 40 50 55 60]
Proses ke 3 [20 22 25 30 11 35 40 50 55 60]
Proses ke 4 [20 22 25 11 30 35 40 50 55 60]
Proses ke 5 [20 22 25 11 30 35 40 50 55 60]
Proses ke 6 [20 22 25 11 30 35 40 50 55 60]
Proses ke 7 [20 22 25 11 30 35 40 50 55 60]
Proses ke 8 [20 22 25 11 30 35 40 50 55 60]
Proses ke 9 [20 22 25 11 30 35 40 50 55 60]

Putaran ke 7 : [20 22 25 11 30 35 40 50 55 60]


Proses ke 1 [20 22 25 11 30 35 40 50 55 60]
Proses ke 2 [20 22 25 11 30 35 40 50 55 60]
Proses ke 3 [20 22 11 25 30 35 40 50 55 60]
Proses ke 4 [20 22 11 25 30 35 40 50 55 60]
Proses ke 5 [20 22 11 25 30 35 40 50 55 60]
Proses ke 6 [20 22 11 25 30 35 40 50 55 60]
Proses ke 7 [20 22 11 25 30 35 40 50 55 60]
Proses ke 8 [20 22 11 25 30 35 40 50 55 60]
Proses ke 9 [20 22 11 25 30 35 40 50 55 60]

Putaran ke 8 : [20 22 11 25 30 35 40 50 55 60]


Proses ke 1 [20 22 11 25 30 35 40 50 55 60]
Proses ke 2 [20 11 22 25 30 35 40 50 55 60]
Proses ke 3 [20 11 22 25 30 35 40 50 55 60]
Proses ke 4 [20 11 22 25 30 35 40 50 55 60]
Proses ke 5 [20 11 22 25 30 35 40 50 55 60]
Proses ke 6 [20 11 22 25 30 35 40 50 55 60]
Proses ke 7 [20 11 22 25 30 35 40 50 55 60]
Proses ke 8 [20 11 22 25 30 35 40 50 55 60]
Proses ke 9 [20 11 22 25 30 35 40 50 55 60]

Putaran ke 9 : [20 11 22 25 30 35 40 50 55 60]


Proses ke 1 [11 20 22 25 30 35 40 50 55 60]
Proses ke 2 [11 20 22 25 30 35 40 50 55 60]
Proses ke 3 [11 20 22 25 30 35 40 50 55 60]
Proses ke 4 [11 20 22 25 30 35 40 50 55 60]
Proses ke 5 [11 20 22 25 30 35 40 50 55 60]
Proses ke 6 [11 20 22 25 30 35 40 50 55 60]
Proses ke 7 [11 20 22 25 30 35 40 50 55 60]
Proses ke 8 [11 20 22 25 30 35 40 50 55 60]
Proses ke 9 [11 20 22 25 30 35 40 50 55 60]
Putaran ke 10 : [11 20 22 25 30 35 40 50 55 60]
Proses ke 1 [11 20 22 25 30 35 40 50 55 60]
Proses ke 2 [11 20 22 25 30 35 40 50 55 60]
Proses ke 3 [11 20 22 25 30 35 40 50 55 60]
Proses ke 4 [11 20 22 25 30 35 40 50 55 60]
Proses ke 5 [11 20 22 25 30 35 40 50 55 60]
Proses ke 6 [11 20 22 25 30 35 40 50 55 60]
Proses ke 7 [11 20 22 25 30 35 40 50 55 60]
Proses ke 8 [11 20 22 25 30 35 40 50 55 60]
Proses ke 9 [11 20 22 25 30 35 40 50 55 60]

Dari analisis proses pengurutan diatas terdapat 10 kali putaran dan setiap
putaran memiliki 9 proses. Pada saat putaran ke 9 sudah selesai tetapi tetap
melakukan putaran sampai ke 10 karena ini yang menjadikan kelemahan algoritma
bubble sort yang masih kurang effisien.

Kelebihan Bubble Sort :


Proses penghitungan Bubble sort merupakan metode yang paling sederhana
Algoritma Bubble Sort mudah dipahami Langkah atau tahapan dalam pengurutan
data sangat sederhana.

Kekurangan Bubbe Sort :


Proses penghitungan Bubble Sort menggunakan metode pengurutan
termasuk paling tidak efisien walaupun dianggap sederhana. Karena proses
pengurutan data dilakukan dengan tahapana satu - satu, mulai dari data paling awal
sebelah kiri, sampai data terakhir Ketika data yang kita punya banyak atau dalam
jumlah yang besar, maka proses penghitungan akan semakin lama dan lambat.
Karena proses pengurutan data secara tunggal (satu - satu). Jumlah pengulangan
akan tetap sama sampai ke data yang terakhir, walaupun sebagian data yang ada
telah
Pengurutan Cepat (Quick Sort)):

Ada dua indeks i dan j dan pada awal algoritma partisi i menunjuk ke elemen
pertama dalam array dan poin j yang terakhir. Kemudian algoritma menggerakkan
i ke depan, sampai elemen dengan nilai yang lebih besar atau sama dengan pivot
ditemukan. Indeks j bergerak mundur, sampai elemen dengan nilai yang lebih
rendah atau sama dengan pivotditemukan.
Jika i ≤ j maka mereka bertukar dan saya langkah ke posisi berikutnya (i +
1), langkah-langkah j dengan yang sebelumnya (j - 1). Algoritma berhenti, ketika
saya menjadi lebih besar dari j. Setelah partisi, semua nilai sebelum elemen ke-i
kurang atau sama dengan pivot dan semua nilai setelah elemen ke-j lebih besar atau
sama dengan pivot.
Algoritma Pengurutan Rekaman dengan Metode Quick Sort :
Coding Quick Sort :

1. # QuikShort dengan Python


2. # Berfungsi untuk mempartisi array berdasarkan elemen pivot
3. def partition(array, i, j):
4.
5.
6. # Pilih elemen pivot
7. pivot = array[j]
8. i = i - 1
9.
10. # Letakkan elemen lebih kecil dari pivot di sebelah kiri dan lebih bes
ar
11. #dapat diputar di kanan pivot
12. for j in range(i, j):
13. if array[j] <= pivot:
14. i = i + 1
15. (array[i], array[j]) = (array[j], array[i])
16.
17. (array[i + 1], array[j]) = (array[j], array[i + 1])
18.
19. return i + 1
20.
21.
22. def quickSort(array, i, j):
23. if i < j:
24.
25. # Pilih posisi pivot dan letakkan semua elemen lebih kecil
26. # dari pivot di kiri dan lebih besar dari pivot di kanan
27. pi = partition(array, i, j)
28.
29. # Urutkan elemen di sebelah kiri pivot
30. quickSort(array, i, pi - 1)
31.
32. # Urutkan elemen di kanan pivot
33. quickSort(array, pi + 1, j)
34.
35.
36. # jumlah elemen
37. n = int(input("Masukan Juamlah Elements : "))
38. # Baris di bawah ini membaca input dari pengguna menggunakan fungsi map (
)
39. a = list(map(int,input("Masukan Nilai : ").strip().split()))[:n]
40. size = len(a)
41. quickSort(a, 0, size - 1)
42. print('Dari hasil pengurutan dengan metode QuikShort')
43. print(a)

Berikut adalah keluaran atau output dari program :


Dari hasil program, source code algoritma quiksort tersebut berhasil dapat
dijalankan tanpa ada error dan menampilkan hasil pengurutan yang sesuai. berikut
ada langkah-langkah proses pengurutan yang dilakukan program :

Kelebihan
Algoritma Quicksort memiliki kompleksitas O(n log n) dimana pada
prakteknya lebih cepat dari algoritma pengurutan lainnya.

Kekurangan
Pada kemungkinan terburuknya, algoritma Quicksort ini dapat memiliki
kompleksitas O(n2). Meskipun ini sangat langka terjadi
Pengurutan Heap ( Heap Sort):

Binary heap digunakan sebagai struktur data dalam algoritma Heap-Sort.


Sebagaimana diketahui, ketika suatu Heap dibangun maka kunci utamanya adalah:
node atas selalu mengandung elemen lebih besar dari kedua node dibawahnya.
Apabila elemen berikutnya ternyata lebih besar dari elemen root, maka harus di swap
dan lakukan: proses heapify lagi. Root dari suatu Heap Sort mengandung elemen
terbesar dari semua elemen dalam Heap.
Algoritma Pengurutan Rekaman dengan Metode Heap :

1. Buat heap maksimum dari data yang akan diurutkan (dalam bentuk pohon
biner lengkap).
2. Selanjutnya, pastikan nilai node parent lebih besar dari node child, jika
tidak maka lakukan pertukaran hingga nilai terbesar tersimpan pada node
root.
3. Lakukan pertukaran antara node root dengan node terakhir pada heap, lalu
kurangi ukuran heap sebanyak 1 buah dengan menghapus node terakhir
setelah pertukaran.
4. Ulangi langkah 2 dan 3,selama ukuran heap lebih besar dari 1

Berikut adalah potongan kode program dengan bahasa pemrograman Java


untuk mengurutkan rekaman dengan metode Heap :
1. Fungsi pengurutan
2. //Fungsi untuk mengurutkan
3. public void sort(int arr[])
4. {
5. int n = arr.length;
6. // Membangun Heap
7. for (int i = n / 2 - 1; i >= 0; i--)
8. heap(arr, n, i);
9. for (int i=n-1; i>0; i--)
10. {
11. // Memindahkan root ke node akhir
12. int sementara = arr[0];
13. arr[0] = arr[i];
14. arr[i] = sementara;
15. // Mengurangi ukuran heap
16. heap(arr, i, 0);
17. }
18. }

2. Fungsi heap
1. //Fungsi untuk mengurangi ukuran heap
2. void heap(int arr[], int n, int i)
3. {
4. int terbesar = i; // Inisialisasi nilai terbesar
5. int l = 2*i + 1; // Node Kiri
6. int r = 2*i + 2; // Node Kanan
7. // Jika node child kiri lebih besar dari i
8. if (l < n && arr[l] > arr[terbesar])
9. terbesar = l;
10. // Jika node child kanan lebih besar dari i
11. if (r < n && arr[r] > arr[terbesar])
12. terbesar = r;
13. // Jika node terbesar bukan root (lakukan pertukaran)
14. if (terbesar != i)
15. {
16. int swap = arr[i];
17. arr[i] = arr[terbesar];
18. arr[terbesar] = swap;
19. // Memanggil fungsi ini secara rekursif
20. heap(arr, n, terbesar);
21. }
22. }

3. Fungsi menampilkan isi array


1. // Fungsi untuk menampilkan isi array
2. static void printArray(int arr[])
3. {
4. int n = arr.length;
5. for (int i=0; i<n; ++i)
6. System.out.print(arr[i]+" ");
7. System.out.println();

4. Fungsi utama

1. public static void main(String[] args) {


2.
3. int arr[] = {12, 11, 13, 5, 6, 7}; //Input kunci rekaman
4. int n = arr.length;
5.
6. System.out.println("Kunci rekaman sebelum diurutkan : ");
7. printArray(arr);
8.
9. HeapSort ob = new HeapSort();
10. ob.sort(arr);
11. System.out.println("Kunci rekaman yang telah diurutkan : ");
12. printArray(arr);
13. }
14. }

Berikut adalah keluaran atau output dari program :

Kelebihan Heap Sort


Algoritma Heap Sort banyak digunakan sebab efisiensi waktunya dan
penggunaan memori yang sedikit.
Kekurangan Heap Sort
Heap Sort membutuhkan banyak ruang memori untuk proses pengurutan
algoritmanya yang memilki kompleksitas yang besar

Anda mungkin juga menyukai