Anda di halaman 1dari 14

MAKALAH DASAR KOMPUTER DAN PEMROGRAMAN

Quick sort and Selection sort

Dosen pengampu :
Reni Rahmadani, S,Kom., M.Kom.
Dr. Amirhud Dalimunthe, ST,M.Kom
Disusun oleh :
Firmansyah putra ( 5223530007 )
Christian leo vander sitorus ( 5223530006 )

PRODI TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS NEGERI MEDAN
KATA PENGANTAR
Assalamualaikum wr wb. Puji syukur atas rahmat allah SWT tuhan yang maha
esa berkat rahmat serta karunianya sehingga makalah dengan judul “ Quick sort
dan Selection sort “ dapat selesai.

Makalah ini dibuat dengan tujuan memenuhi tugas akhir semester 1 mata
kuliah Dasar komputer dan pemrograman dari ibu Reni rahmadani, S.Kom.,
M.Kom. selain itu tujuan pembuatan makalah ini bertujuan menambah wawasan
kepada pembaca tentang materi Quick sort dan Selection sort.

Kami dari kelompok 11 mengucapkan terima kasih kepada ibu Reni


Rahmadani, S.Kom., M.Kom. selaku dosen mata kuliah Dasar komputer dan
pemrograman berkat tugas yang diberikan ini dapat menambah wawasan yang
berkaitan dengan topik yang diberikan. Kami juga mengucapakan terima kasih
kepada pihak yang telah membantu dalam proses penyusunan makalah ini.

Kami menyadari bahwa dalam penyusunan makalah masih banyak kesalahan


dalam penyusunannya. Oleh karena itu kami mohon maaf atas kesalahan dan
ketidaksempurnaan yang pembaca temukan dalam makalah ini. Kami juga
mengharap adanya kritik dan saran dari pembaca apabila menemukan kesalahan
dalam makalah ini .terima kasih.

Medan 23 November 2022

Kelompok 11

DAFTAR ISI
Kata pengantar...............................................................................................................................
Daftar isi.........................................................................................................................................
BAB I PENDAHULUAN
A. Latar belakang.......................................................................................................
B. Rumusan masalah.................................................................................................
C. Tujuan....................................................................................................................

BAB II PEMBAHASAN
A. Defenisi Quick sort................................................................................................
B. Metode Quick sort.................................................................................................
C. Langkah pengurutan dalam Quick sort..................................................................
D. Simulasi Quick sort................................................................................................
E. Kelebihan dan kekurangan Quick sort...................................................................
F. Defenisi Selection sort ..........................................................................................
G. Metode Selection sort...........................................................................................
H. Langkah pengurutan dalam Selection sort............................................................
I. Simulasi Selection sort...........................................................................................
J. Kelebihan dan kekurangan Selection sort.............................................................

BAB III PENUTUP


Kesimpulan....................................................................................................................................

BAB I PENDAHULUAN
A. Latar belakang

Pengurutan atau shorting merupakan jenis operasi penting dalam pengolahan data. Hampir
setiap saat dalam kehidupan sehari-hari selalu menjumpai permasalahan yang harus diselesaikan
dengan melibatkan operasi pengurutan data. Begitu pentingnya operasi tersebut, sehingga sampai
saat ini telah banyakdikembangkan metode-metode pengurutan data dan mungkin akan tetap
bermunculan metode-metode baru.
Pengurutan data juga merupakan salah satu proses yang sangat dibutuhkan di dalam
pemrograman. Sorting atau pengurutan ini adalah prosesmengatur sekumpulan objek menurut
urutan atau susunan tertentu. Adanya kebutuhan akan pengurutan melahirkan beberapa macam
pengurutan. Metodemetodepengurutan antara lain, yaitu bubble sort, selection sort, insertion
sort, quick sort, merge sort dan lain sebagainya.
Dari kumpulan data yang disimpan dapat mempunyai tipe data yang berbeda-beda dan
pengurutan terhadap data tersebut dapat dilakukan untuk satu atribut atau lebih tergantung pada
kebutuhan yang diinginkan.
Contoh penerapannya antara lain berupa daftar hadir yang diurutkan berdasarkan nomor
induk, menentukan rangking tertinggi nilai mahasiswa, dan banyak contoh. Namun terkadang
data yang ingin diurutkan tidak hanya berupa data satu baris atau data satu kolom. Melainkan
data yang terdiri dari beberapa kolom, dan setiap kolom terdiri dari baris yang mungkin berbeda.

B. Rumusan masalah

1. Apa pengertian Quick sort dan Selection sort


2. Bagaimana langkah-langkah sorting dalam Quick sort dan Selection sort
3. Bagaimana simulasi dari Quick sort dan Selection sort
4. Apa kekurangan dan kelebihan Quick sort dan Selection Sort

C. Tujuan
Tujuan dibuatnya makalah ini antara lain:

1. Untuk memenuhi tugas mata kuliah Dasar komputer dan pemrograman yang diampu
oleh ibu Reni rahmadani, S.Kom., M.Kom.
2. Untuk menambah pengetahuan penulis dan pembaca mengenai Quick sort dan
Selection sort.
BAB II PEMBAHASAN
A. Defenisi Quick sort

Quicksort merupakan Algoritme pengurutan yang dikembangkan oleh


Tony Hoare. performa rata-rata pengurutan O(n log n) untuk mengurutkan n
item. Algoritme ini juga dikenal sebagai Partition-Exchange Sort atau disebut
sebagai Sorting Pergantian Pembagi.

B. Metode Quick sort

Algortima QuickSort merupakan algoritma untuk mengurutkan data


dengan pendekatan rekursif. Proses pengurutan dilakukan dengan memecah
kumpulan data menjadi dua bagian berdasarkan nilai pivot yang dipilih. Pada
prinsipnya nilai pivot yang dipilih ini akan ditempatkan pada posisinya disetiap
akhir proses partisi.

C. Langkah pengurutan Quick sort

Langkah-Langkah pengerjaannya ialah:

1. Ambil sebuah elemen, yang disebut dengan pivot, pada sebuah daftar.


2. Urutkan kembali sebuah list sehingga elemen dengan nilai yang kecil dari
pivot berada sebelum pivot, sedangkan seluruh element yang memiliki nilai
yang lebih besar dari pivot berada setelahnya (nilai yang sama dapat berada
pada pivot setelahnya). Setelah pemisahan, pivot berada pada posisi
akhirnya. Operasi ini disebut Partition.
3. Sub list kemudian disortir secara recursif dari elemen yang lebih kecil dan
sub list dari elemen yang lebih besar Kasus dasar dari rekusrif ialah list dari
besaran nol atau satu, yang tidak perlu untuk di sorting

D. Simulasi Quick sort


// Quick sort in C

#include <stdio.h>

// berfungsi untuk menukar elemen


void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}

// berfungsi untuk mencari posisi partisi


int partition(int array[], int low, int high) {

// pilih elemen paling kanan sebagai pivot


int pivot = array[high];

// pointer untuk elemen yang lebih besar


int i = (low - 1);

// melintasi setiap elemen array


// bandingkan dengan pivot
for (int j = low; j < high; j++) {
if (array[j] <= pivot) {

// jika elemen yang lebih kecil dari pivot ditemukan


// tukar dengan elemen yang lebih besar yang ditunjukkan oleh i
i++;

// tukar elemen di i dengan elemen di j


swap(&array[i], &array[j]);
}
}

// tukar elemen pivot dengan elemen yang lebih besar di i


swap(&array[i + 1], &array[high]);
// mengembalikan titik partisi
return (i + 1);
}

void quickSort(int array[], int low, int high) {


if (low < high) {
// temukan elemen pivot sehingga
// elemen yang lebih kecil dari pivot ada di kiri pivot
// elemen yang lebih besar dari pivot berada di kanan pivot
int pi = partition(array, low, high);

// panggilan rekursif di sebelah kiri pivot


quickSort(array, low, pi - 1);

// panggilan rekursif di sebelah kanan pivot


quickSort(array, pi + 1, high);
}
}

// berfungsi untuk mencetak elemen array


void printArray(int array[], int size) {
for (int i = 0; i < size; ++i) {
printf("%d ", array[i]);
}
printf("\n");
}
// fungsi utama
int main() {
int data[] = {99, 89, 22, 10, 0, 9, 6, 70, 19, 17, 20,};

int n = sizeof(data) / sizeof(data[0]);

printf("Array yang Tidak Disortir\n");


printArray(data, n);

// melakukan quicksort pada data


quickSort(data, 0, n - 1);

printf("Array yang diurutkan dalam urutan menaik: \n");


printArray(data, n);
}

E. Kelebihan dan kekurangan Quick sort


Kelebihan Quick Sort

Dalam prakteknya adalah yang tercepat dari berbagai algoritma


pengurutan dengan perbandingan, seperti merge sort dan heap sort. Melakukan
proses langsung pada input (in-place) dengan sedikit tambahan memori.
Bekerja dengan baik pada berbagai jenis input data (seperti angka dan
karakter).

Kekurangan Quick sort

Sedikit kesalahan dalam penulisan program membuatnya bekerja


tidak beraturan (hasilnya tidak benar atau tidak pernah selesai).
Memiliki ketergantungan terhadap data yang dimasukkan, yang dalam
kasus terburuk memiliki kompleksitas.

F. Defenisi Selection sort

Selection Sort adalah suatu metode pengurutan yang membandingkan


elemen sekarang dengan elemen berikutnya sampai ke elemen yang terakhir.
Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang maka dicatat
posisinya dan langsung ditukar.

G. Metode Selection sort

Algoritma selection sort merupakan pengurutan dengan konsep memilih


elemen dengan nilai paling rendah dan menukar elemen tersebut dengan elemen
ke i. Nilai dari i dimulai dari 1 ke n, yang dimana n merupakan jumlah total
elemen dikurangi satu.

H. Langkah Selection sort

Misalkan kita memiliki data acak sebagai berikut :


5, 34, 32, 25, 75, 42, 22, 2
Langkah 0, data sebelumnya :
5, 34, 32, 25, 75, 42, 22, 2
Pembanding  Posisi Terkecil
5 > 34 ? TIDAK  0
5 > 32 ? TIDAK  0
5 > 25 ? TIDAK  0
5 > 75 ? TIDAK  0
5 > 42 ? TIDAK  0
5 > 22 ? TIDAK  0
5 > 2 ? YA  7
Hasil, tukar posisi 0 dan posisi 7 :
2, 34, 32, 25, 75, 42, 22, 5

Langkah 1, data sebelumnya :


2, 34, 32, 25, 75, 42, 22, 5
Pembanding  Posisi Terkecil
34 > 32 ? YA  2
32 > 25 ? YA  3
25 > 75 ? TIDAK  3
25 > 42 ? TIDAK  3
25 > 22 ? YA  6
22 > 5 ? YA  7
Hasil, tukar posisi 1 dan posisi 7 : 2, 5, 32, 25, 75, 42, 22, 34
Langkah 2, data sebelumnya :
2, 5, 32, 25, 75, 42, 22, 34
Pembanding  Posisi Terkecil
32 > 25 ? YA  3
25 > 75 ? TIDAK  3
25 > 42 ? TIDAK  3
25 > 22 ? YA  6
22 > 34 ? TIDAK  6
Hasil, tukar posisi 2 dan posisi 6 :
2, 5, 22, 25, 75, 42, 32, 34

Langkah 3, data sebelumnya :


2, 5, 22, 25, 75, 42, 32, 34
Pembanding  Posisi Terkecil
25 > 75 ? TIDAK  3
25 > 42 ? TIDAK  3
25 > 32 ? TIDAK  3
25 > 34 ? TIDAK  3
Hasil, tukar posisi 3 dan posisi 3 :
2, 5, 22, 25, 75, 42, 32, 34

Langkah 4, data sebelumnya :


2, 5, 22, 25, 75, 42, 32, 34
Pembanding  Posisi Terkecil
75 > 42 ? YA  5
42 > 32 ? YA  6
32 > 34 ? TIDAK  6
Hasil, tukar posisi 4 dan posisi 6 :
2, 5, 22, 25, 32, 42, 75, 34

Langkah 5, data sebelumnya :


2, 5, 22, 25, 32, 42, 75, 34
Pembanding  Posisi Terkecil
42 > 75 ? TIDAK  5
42 > 34 ? YA  7
Hasil, tukar posisi 5 dan posisi 7 :
2, 5, 22, 25, 32, 34, 75, 42
Langkah 6, data sebelumnya :
2, 5, 22, 25, 32, 34, 75, 42
Pembanding  Posisi Terkecil
75 > 42 ? YA  7
Hasil, tukar posisi 6 dan posisi 7 :
2, 5, 22, 25, 32, 34, 42, 75
Data Awal :
5, 34, 32, 25, 75, 42, 22, 2
Data Akhir :
2, 5, 22, 25, 32, 34, 42, 75

I.Simulasi Selection sort

// Selection sort in C
#include <stdio.h>

// function to swap the the position of two elements


void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}

void selectionSort(int array[], int size) {


for (int step = 0; step < size - 1; step++) {
int min_idx = step;
for (int i = step + 1; i < size; i++) {

// To sort in descending order, change > to < in this line.


// Select the minimum element in each loop.
if (array[i] < array[min_idx])
min_idx = i;
}

// put min at the correct position


swap(&array[min_idx], &array[step]);
}
}

// function to print an array


void printArray(int array[], int size) {
for (int i = 0; i < size; ++i) {
printf("%d ", array[i]);
}
printf("\n");
}

// driver code
int main() {
int data[] = {20, 12, 10, 15, 2};
int size = sizeof(data) / sizeof(data[0]);
selectionSort(data, size);
printf("Sorted array in Acsending Order:\n");
printArray(data, size);
}
J.Kelebihan dan kekurangan

Kelebihan
a) Algoritma ini sangat rapat dan mudah untuk diimplementasikan.
b) Mempercepat pencarian.
c) Mudah menentukan data maksimum/minimum.
d) Mudah menggabungkannya kembali.
e) Kompleksitas Selection sort relatif lebih kecil.

Kekurangan
a) Membutuhkan method tambahan.
b) Sulit untuk digabungkan kembali.
c) Perlu dihindari untuk penggunaan data lebih dari 1000 tabel, karena
akan menyebabkan kompleksitas lebih tinggi dan kurang praktis.

BAB III PENUTUP

KESIMPULAN
Quick sort dalam prakteknya adalah yang tercepat dari berbagai algoritma
pengurutan dengan perbandingan, seperti merge sort dan heap sort. Akan tetapi
Sedikit kesalahan dalam penulisan program membuatnya bekerja tidak beraturan
(hasilnya tidak benar atau tidak pernah selesai). Memiliki ketergantungan terhadap
data yang dimasukkan, yang dalam kasus terburuk memiliki kompleksitas.
Sedangkan Selection sort Algoritma ini sangat rapat dan mudah untuk
diimplementasikan. Tetapi Membutuhkan method tambahan dan Sulit untuk
digabungkan kembali.
Keduanya memiliki kelebihan dan kekurangan masing-masing dan jika
menggunakannya harus mengerti apa yang dibutuhkan karena ada kelemahannya
masing-masing.

Anda mungkin juga menyukai