You are on page 1of 8

LAPORAN PRAKTIKUM STUKTUR DATA

TUGAS PRAKTIKUM SORTING

Disusun Oleh :
Fauzan
362358302054
1E

PROGRAM STUDI TEKNOLOGI REKAYASA PERANGKAT LUNAK


JURUSAN BISNIS DAN INFORMATIKA
POLITEKNIK NEGERI BANYUWANGI
2024
TUGAS PRAKTIKUM MINGGU 5

Buatlah Grafik Fungsi Time terhadap jumlah data seperti contoh grafik berikut, yang digunakan
untuk menganalisa dari pemakaian METODE SORTING, mulai insertion, selection, bubble dan
shell.

Dengan menggunakan data acak dengan jumlah data (n) mulai dari 5, 10, 50, 100, 500. (agar
cepat bisa menggunakan data generate). Nanti hasil dimasukkan di table excel

import 'dart:math';

List<int> generateRandomData(int n) {

Random random = Random();

List<int> data = List.generate(n, (index) => random.nextInt(1000));

return data;

void insertionSort(List<int> arr) {


for (int i = 1; i < arr.length; i++) {

int key = arr[i];

int j = i - 1;

while (j >= 0 && arr[j] > key) {

arr[j + 1] = arr[j];

j = j - 1;

arr[j + 1] = key;

void selectionSort(List<int> arr) {

for (int i = 0; i < arr.length - 1; i++) {

int minIndex = i;

for (int j = i + 1; j < arr.length; j++) {

if (arr[j] < arr[minIndex]) {

minIndex = j;

if (minIndex != i) {

int temp = arr[i];

arr[i] = arr[minIndex];
arr[minIndex] = temp;

void bubbleSort(List<int> arr) {

int n = arr.length;

for (int i = 0; i < n - 1; i++) {

for (int j = 0; j < n - i - 1; j++) {

if (arr[j] > arr[j + 1]) {

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

void shellSort(List<int> arr) {

int n = arr.length;

for (int gap = n ~/ 2; gap > 0; gap ~/= 2) {

for (int i = gap; i < n; i += 1) {


int temp = arr[i];

int j;

for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {

arr[j] = arr[j - gap];

arr[j] = temp;

void main() {

List<int> dataSizes = [5, 10, 50, 100, 500];

Map<String, List<double>?> results = {

'Insertion Sort': [],

'Selection Sort': [],

'Bubble Sort': [],

'Shell Sort': [],

};

for (int n in dataSizes) {

List<int> data = generateRandomData(n);


for (String algorithm in results.keys) {

List<int> copyData = List.from(data);

Stopwatch stopwatch = Stopwatch()..start();

switch (algorithm) {

case 'Insertion Sort':

insertionSort(copyData);

break;

case 'Selection Sort':

selectionSort(copyData);

break;

case 'Bubble Sort':

bubbleSort(copyData);

break;

case 'Shell Sort':

shellSort(copyData);

break;

stopwatch.stop();

results[algorithm]?.add(stopwatch.elapsedMicroseconds / 1000); // convert to milliseconds

}
}

print('Jumlah Data\tInsertion Sort\tSelection Sort\tBubble Sort\tShell Sort');

for (int i = 0; i < dataSizes.length; i++) {

String row = '${dataSizes[i]}\t\t';

for (String algorithm in results.keys) {

row += '${results[algorithm]![i]}\t\t'; // Add null check operator (!)

print(row);

JUMLAH DATA INSERTION SORT SELECTION SORT BUBBBLE SHORT SHELL SHORT
5 5.21 1.819 1.129 1.097
10 0.017 0.02 0.026 0.02
50 0.258 0.261 0.545 0.16
100 0.897 0.998 2.325 0.405
500 12.136 11.179 26.149 3.484
Penjelasan

Program di atas adalah contoh implementasi algoritma pengurutan (sorting) dalam bahasa
pemrograman Dart. Program ini mengimplementasikan empat jenis algoritma pengurutan,
yaitu:

1. *Insertion Sort*: Algoritma ini mengurutkan elemen satu per satu dengan membandingkan
setiap elemen dengan elemen lainnya dan memindahkan elemen ke posisi yang tepat.

2. *Selection Sort*: Algoritma ini secara berulang memilih elemen minimum dari sisa elemen
yang belum diurutkan dan memindahkannya ke bagian depan.

3. *Bubble Sort*: Algoritma ini secara berulang membandingkan setiap pasangan elemen yang
berdekatan dan menukar mereka jika urutannya salah.

4. *Shell Sort*: Algoritma ini merupakan variasi dari Insertion Sort yang menggunakan jarak
(gap) tertentu untuk membandingkan dan menukar elemen yang jauh.

Setelah mengimplementasikan keempat algoritma tersebut, program kemudian mengukur


waktu yang diperlukan untuk mengurutkan data dengan berbagai ukuran (5, 10, 50, 100, 500)
menggunakan setiap algoritma. Hasil pengukuran waktu disimpan dalam sebuah map yang
memiliki nama algoritma sebagai kunci dan daftar waktu eksekusi sebagai nilainya.

Akhirnya, program mencetak hasil pengukuran waktu dalam bentuk tabel,


menampilkan jumlah data serta waktu eksekusi untuk setiap algoritma pada
setiap ukuran data.

You might also like