Anda di halaman 1dari 15

Struktur Data

Sort

Dosen Pengampu :Ressy Dwi Tyas Sari,M.T.I

Nama Mahasiswa :Sigit Nugroho


NIM: 5213351041

PROGRAM STUDI TEKNOLOGI INFORMATIKA DAN


KOMPUTER
FAKULTAS TEKNIK UNIVERSITAS NEGERI MEDAN
2022
Kata Pengantar

Puji syukur kehadiran Tuhan Yang Maha Esa atas limpahan rahmat dan lindungan-
nya. Akhirnya makalah ini kami selesaikan dengan lancar. Makalah ini kami susun
untuk memenuhi tugas mata kuliah Dasar-Dasar Logika.selain itu Kami menyusun
makalah ini untuk menambah wawasan untuk memahami.
Mungkin makalah yang kami buat ini belum sempurna karena kami juga masih
dalam tahap belajar, oleh karena itu kami menerima saran ataupun kritikan dari
segala pihak agar makalah selanjutnya bisa lebih baik dari sebelumnya. Dalam
makalah ini saya membahas tentang “Pengertian Logika dan Ruang Lingkup
Logika Semoga makalah yang Kami buat ini bisa bermanfaat bagi pembaca.
DAFTAR ISI

KATA PENGANTAR………………………………………………………………………………….
DAFTAR ISI……………………………………………………………………………………………

BAB I PENDAHULUAN
1.1 LATAR BELAKANG…………………………………………………………………………….
1.2 RUMUSAN MASALAH………………………………………………………………………….
1.3 TUJUAN………………………………………………………………………………………….

BAB II PEMBAHASAN
2.1 PENGERTIAN SORTING……………………………………………………………………..
2.2 RADIX SORT………………………………………………………………………………….
2.3 PEMROSESAN RADIX SORT………………………………………………………………..
2.4 PROGRAM RADIX SORT DALAM BAHASA C++…………………………………………
2.5 QUICK SORT………………………………………………………………………………….
2.6 IMPLEMENTASI QUICK SORT PADA C++……………………………………………….
2.7 SHELL SORT…………………………………………………………………………………

BAB III PENUTUP


3.1 KESIMPULAN………………………………………………………………………………..
3.2 SARAN…………………………………………………………………………………………
BAB I
PENDAHULUAN

1.1 Latar belakang


Dengan berkembangnya Teknologi Informasi, yang membutuhkan kecepatan dan ketepatan
dalam berbagai aspek kehidupan. Kita dituntut untuk bergerak cepat dalam segala hal,
termasuk juga dalam bidang komunikasi informasi. Teknologi sangat berperan penting dalam
kehidupan sehari – hari.
Bahasa pemograman sangat dibutuhkan dalam keperluan tertentu, karena pekerjaan kita pada
saat ini selalu mengikuti kemajuan teknologi. Demi menambah kepuasan masyarakat
menjadi sisi yang paling ditonjolkan. Hal ini tentu saja semakin memantapkan posisinya
sebagai bahasa penghantar antara manusia yang dapat dipahami, dan dapat dijalankan oleh
seorang programmer. Ia telah menjadi bagian hidup masyarakat masa kini, bukan hanya
sebagai sumber informasi, tetapi juga gaya hidup dan kebudayaan.
Sehingga banyak progamer yang membuat program yang mempermudah kerja dalam bidang
statistika dan informasi, yakni dalam hal pengurutan data. Dari program pengurutan data
terdapat algoritma-algoritma yang digunakan untuk menguruutkan sebuah data, salah satunya
adalah sorting
Adapun Kelebihan Sorting adalah untuk memudahkan dalam pencarian data, dan juga agar
data lebih sestematis karena terurut. Sehingga metode pengurutan dengan menggunakan
sorting sangat bermanfaat dalam pencarian data.
Pada makalah ini kami memilih metode sorting, karena melihat keunggulan yang dimiliki
oleh sorting. Oleh karena itu sorting sangat bermanfaat untuk pencarian data.

1.2 Rumusan mmasalah


 Pengertian sorting
 Apa saja macam macam sort?

1.3 Tujuan
 Mempermudah pekerjaan manusia dalam bidang informasi
 Mempermudah pekerjaan manusia dalam bidang statistic.
 Mempermudah pekerjaan manusia dalam bidang komputerisasi lainya terutama dalam
bidang pencarian data
 Data akan teratur (sistematis)
BAB II
PEMBAHASAN
2.1 Pengertian sorting
Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk
dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang
terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan
lagi. Selain itu, dengan mengurutkan data maka kita semakin mudah untuk menyisipkan data
atapun melakukan penggabungan data
Metode metode sorting meliputi :
 Radix Sort
 Quick Sort
 Shell Sort
2.2 Radix Sort
Ide dasar dari metode Radix sort ini adalah mengkategorikan data-data

menjadi subkumpulan-subkumpulan data sesuai dengan nilai radix-

nya,mengkonkatenasinya, kemudian mengkategorikannya kembali berdasar nilai

radix lainnya.

Dalam kenyataannya banyak sekali algoritma Radix sort yang berbeda- beda

walaupun ide dasarnya sama. Radix sort mengurutkan data berdasarkan posisi digit

dalam angka atau karakter dalam string. Radix sort digunakan untuk mengurutkan

data sebagai kelompok karakter atau string.

2.3 Pemrosesan Radix Sort

Berdasarkan pemrosesan, Radix nya:

a. LSD (LeastSignificant Digit) di mana pemrosesan dimulai dari radix yang

paling tidak signifikan


b. MSD (Most Significant Digit), di mana pemrosesan dimulai dari radix yang

paling signifikan.

2.4 Program Radix Short Dalam Bahasa C++


Realisasi radix sort di C dapat dilihat pada Script di bawah ini :

//program C++ Redix Short


#include <stdio.h>
#define MAX 20
#define SHOWPASS
#define BASE 10
void print(int *a, int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d\t", a[i]);
}

void radixsort(int *a, int n)


{
int i, b[MAX], m = a[0], exp = 1;

//Get the greatest value in the array a and assign it to m


for (i = 1; i < n; i++)
{
if (a[i] > m)
m = a[i];
}

//Loop until exp is bigger than the largest number


while (m / exp > 0)
{
int bucket[BASE] = { 0 };

//Count the number of keys that will go into each bucket


for (i = 0; i < n; i++)
bucket[(a[i] / exp) % BASE]++;

//Add the count of the previous buckets to acquire the indexes after the end of each
bucket location in the array
for (i = 1; i < BASE; i++)
bucket[i] += bucket[i - 1]; //similar to count sort algorithm i.e. c[i]=c[i]+c[i-1];

//Starting at the end of the list, get the index corresponding to the a[i]'s key,
decrement it, and use it to place a[i] into array b.
for (i = n - 1; i >= 0; i--)
b[--bucket[(a[i] / exp) % BASE]] = a[i];

//Copy array b to array a


for (i = 0; i < n; i++)
a[i] = b[i];

//Multiply exp by the BASE to get the next group of keys


exp *= BASE;

#ifdef SHOWPASS
printf("\nPASS : ");
print(a, n);
#endif
}
}

int main()
{
int arr[MAX];
int i, n;
printf("Enter total elements (n <= %d) : ", MAX);
scanf("%d", &n);
n = n < MAX ? n : MAX;

printf("Enter %d Elements : ", n);


for (i = 0; i < n; i++)
scanf("%d", &arr[i]);

printf("\nARRAY : ");
print(&arr[0], n);

radixsort(&arr[0], n);

printf("\nSORTED : ");
print(&arr[0], n);
printf("\n");

return 0;
}
Outputnya sebagai berikut :

2.5 Quick Sort


Quicksort merupakan Algortima Pembagi. Pertama sekali quicksort membagi list yang
besar menjadi dua buah sub list yang lebih kecil: element kecil dan element besar.
Quicksort kemudian dapat menyortir sub list itu secara rekursif.
Algoritma Quick Sort ini terdapat tiga bagian yaitu low, high, dan pivot. Low adalah batas
bawah atau index awal sebuah array, sedangkan high adalah batas akhir atau index
terakhir array tersebut, dan pivot sebagai index acuan. Pada array normal yang belum
dipecah, nilai lownya adalah 0 (nol) karena array dimulai dari index ke-0. Sedangkan
untuk high, nilainya array.length-1.
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.
Adapun algoritma quick sort adalah seperti dibawah ini :

QuickSort(A, low, high)

if low < high

p = Partition (A, low, high)

QuickSort(A, low, p-1)

QuickSort(A, p+1, high)

Pada algoritma quick sort diatas terdapat dua metod, yang pertama metodQuick
Sort itu sendiri yang bersifat rekursif dan metod Partition yang digunakan untuk
mengetahui penanda sehingga data tersebut terpecah menjadi dua. Algoritma dijalankan
selama nilai low kurang dari high, apabila nilai low sama dengan nilai high, artinya jumlah
elemen array hanya ada satu. Variabel p digunakan untuk menampung nilai pivot yang
digunakan untuk acuan pemecahan array. Sebelum dipecah menjadi dua, array tersebut
dipartisi dulu untuk menentukan index pivot. Setelah diketahui index keberapa yang
menjadi pivot maka array terpecah menjadi dua. Pada array pertama bagian kiri, nilai
lownya tetap nol dan nilai highnya pivot-1. Sedangkan pada array sisi kanan, nilai lownya
adalah pivot+1 dan highnya array.length-1.

2.6 Implementasi Quick Sort Pada C++


Program C++ merupakan salah satu program yang bisa digunakan dalam penggunaan
Quick Sort yang mudah untuk digunakan. Salah satu contoh dari Quick Sort dalam C++
adalah :

#include <iostream> #define n 20


using namespace std;

int Ar[n];
void quickSort(int arr[], int left, int right); int main()
{
int jumlahBil=5;
cout<<"Masukkan jumlah bilangan dalam arry [Maksimal 20]"<<endl; cin>>jumlahBil;
int Ar[jumlahBil];
for(int i=0; i<jumlahBil;i++)
{
cout<<"Bilangan ke-"<< i+1 << endl; cin>>Ar[i];
}
quickSort(Ar,0,jumlahBil-1); ); cout<<"Data yang telah diurutkan"<<endl; for(int i=0;
i<jumlahBil;i++)
{
cout<<Ar[i]<<"\n";
}
}
void quickSort(int arr[], int left, int right)
{int i = left, j = right; int tmp;
int pivot = arr[(left + right) / 2]; while (i <= j)
{
while (arr[i] < pivot) i++;
while (arr[j] > pivot) j--;
if (i <= j)
{
tmp = arr[i];

arr[i] = arr[j]; arr[j] = tmp; i++;


j--;
}
};
if (left < j) quickSort(arr, left, j); if (i < right) quickSort(arr, i, right);
}
2.7 Shell Sort
Metode ini mengurutkan data dengan cara membandingkan suatu data dengan data lain
yang memiliki jarak tertentu, kemudian dilakukan penukaran bila diperlukan. Proses
pengurutan dengan metode Shell dapat dijelaskan sebagai berikut :
Pertama-tama adalah menentukan jarak mula-mula dari data yang akan dibandingkan, yaitu
N / 2. Data pertama dibandingkan dengan data dengan jarak N / 2. Apabila data pertama
lebih besar dari data ke N / 2 tersebut maka kedua data tersebut ditukar. Kemudian data
kedua dibandingkan dengan jarak yang sama yaitu N / 2. Demikian seterusnya sampai
seluruh data dibandingkan sehingga semua data ke-j selalu lebih kecil daripada data ke-(j +
N / 2).
Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4. Data pertama dibandingkan
dengan data dengan jarak N / 4. Apabila data pertama lebih besar dari data ke N / 4
tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan
jarak yang sama yaitu N / 4. Demikianlah seterusnya hingga seluruh data dibandingkan
sehingga semua data ke-j lebih kecil daripada data ke-(j + N / 4).
Pada proses berikutnya, digunakan jarak (N / 4) / 2 atau N / 8. Demikian seterusnya sampai
jarak yang digunakan adalah 1.
Algoritma metode Shell dapat dituliskan sebagai berikut :
1. Jarak = N
2. Selama (Jarak > 1) kerjakan baris 3 sampai dengan 9
3. Jarak = Jarak / 2. Sudah = false
4. Kerjakan baris 4 sampai dengan 8 selama Sudah = false
5. Sudah = true
6. j = 0
7. Selama (j < N – Jarak) kerjakan baris 8 dan 9
8. Jika (Data[j] > Data[j + Jarak] maka tukar Data[j],
Data[j + Jarak].
Sudah = true
9. j = j + 1
kami mengambil interval 4. Buat daftar sub-virtual dari semua nilai yang berada pada
interval

Disisni kita membandingkan nilai dalam setiap sub-daftar dan menukarkannya (jika perlu) dalam
larik aslinya. Setelah langkah ini, array baru akan terlihat seperti ini

Kemudian, kita mengambil interval 2 dan celah ini menghasilkan dua sub-daftar - {14, 27, 35,
42}, {19, 10, 33, 44}

Kami membandingkan dan menukar nilai, jika diperlukan, dalam larik asli. Setelah langkah ini,
array akan terlihat seperti ini –

Akhirnya, kita mengurutkan sisa array menggunakan interval nilai 1. Shell sort
menggunakan semacam penyisipan untuk mengurutkan array.

Berikut adalah penggambaran langkah demi Langkah


BAB III
PENUTUP

3.1 KESIMPULAN

Dari penjelasan diatas bahwa sorting dibagi menjadi beberapa bagian, diantaranya : insertion
sort, marge sort, radix sort, quick sort, dan shell sort Yang memiliki kelebihan dan
kekurangan tersendiri. Dari beberapa shorting tersebut memiliki tujuan yang sama, yaitu
mengurutkan data untuk mempermudah pencarian dan data akan menjadi sistematis.

3.2 SARAN

– Telitilah dalam pembuatan program yang melibatkan sorting

– Dalam penulisan program harus mengikuti aturan – aturan penulisan.

Penulis sangat mengharapkan kritik dan saran bagi pembaca yang sifatnya membangun

Anda mungkin juga menyukai