1. Buatlah workspace menggunakan C++.
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int Data[MAX];
int SequentialSearch(int x)
{
int i = 0;
bool ketemu = false;
while ((!ketemu) && (i < MAX)){
if(Data[i] == x)
ketemu = true;
else
i++;
}
if(ketemu)
return i;
else
return -1;
}
int main()
{
int i;
//pembangkit bilangan random
srand(0);
//membangkitkan bilangan integer random
printf("\nDATA : ");
for (i = 0; i < MAX; i++)
{
Data[i] = rand()/1000+1;
printf("%d ", Data[i]);
}
int Kunci;
printf("\nKunci : ");
scanf("%d", &Kunci);
int ketemu = SequentialSearch(Kunci);
if(ketemu>0)
printf("Data ditemukan pada posisi %d", ketemu);
else
printf("Data tidak ditemukan");
}
Searching
printf("Hallo Para Programmer!!");
printf("Disini Saya Akan Membahas Mengenai Algoritma Pengurutan Dalam Bahasa C/C++");
printf("Algoritma Pengurutan Yang Saya Bahas Adalah Quick Sort Dan Merge Sort");
printf("Terus Ikuti Blog Ini Untuk Mendapatkan Artikel Bermanfaat Selanjutnya yah");
printf("Selamat Belajar!!");
Algoritma pencarian (searching algorithm) adalah algoritma yang menerima sebuah argumen kunci dan dengan langkah-langkah tertentu akan mencari rekaman dengan kunci tersebut. Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak ditemukan (unsuccessful).
Ada dua macam teknik pencarian yaitu pencarian sekuensial (sequential search) dan pencarian biner (binary search). Perbedaan dari dua teknik ini terletak pada keadaan data. Pencarian sekuensial digunakan apabila data dalam keadaan acak atau tidak terurut. Sebaliknya, pencarian biner digunakan pada data yang sudah dalam keadaan urut.
1. Pencarian Berurutan (Sequential Search)
Algoritma pencarian dapat dijelaskan sebagai berikut : pencarian dimulai dari data paling awal, kemudian ditelusuri dengan menaikkan indeks data, apabila data sama dengan kunci pencarian dihentikan dan diberikan nilai pengembalian true, apabila sampai indeks terakhir data tidak ditemukan maka diberikan nilai pengembalian false.
Ilustrasi dari algoritma pencarian biner adalah sebagai berikut :
Data[4]=3 sama dengan kunci=3 maka data ditemukan dan diberikan nilai pengembalian i (posisi) dan proses dihentikan. Apabila data tidak ditemukan, maka fungsi akan mengembalikan nilai -1
Quick Sort & Merge Sort
printf("Hallo Para Programmer!!");
printf("Disini Saya Akan Membahas Mengenai Algoritma Pengurutan Dalam Bahasa C/C++");
printf("Algoritma Pengurutan Yang Saya Bahas Adalah Quick Sort Dan Merge Sort");
printf("Terus Ikuti Blog Ini Untuk Mendapatkan Artikel Bermanfaat Selanjutnya yah");
printf("Selamat Belajar!!");
1. Algoritma Quick Sort
Metode quick sort dikembangkan oleh C.A.R Hoare.Secara garis besar metode ini dijelaskan sebagai berikut. Misalnya kita ingin mengurutkan data A yang mempunyai N elemen. Kita pilih sembarang elemen dari data tersebut, bisanya elemen pertama, misalnya X. kemudian semua elemen tersebut disusun dengan menempatkan X pada posisi J sedemikian rupa sehingga elemen ke 1 sampai ke J 1 mempunyai nilai lebih kecil dari X dan elemen J+1sampai ke N mempunyai nilai lebih besar dari X. Sampai saat ini kita sudah mempunyai dua sub data (kiri dan kanan). Langkah berikutnya diulang untuk setiap sub data.
2. Algoritma Merge Sort
Selama p0..n masih menunjuk data yang di dalam sebagai pengganti pada akhirnya:
1. Bubble sort secara ascending
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 20
void BubbleSort(int arr[])
{
int i, j, temp;
for (i = 0; i < MAX - 1; i++)
{
for (j = 0; j < MAX - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
int main()
{
int data_awal[MAX], data_urut[MAX];
int i;
time_t k1, k2;
printf("Sebelum pengurutan : \n");
for (i = 0; i < MAX; i++)
{
srand(time(NULL) * (i + 1));
data_awal[i] = rand() % 100 + 1;
printf("%d ", data_awal[i]);
}
printf("\n\nSetelah pengurutan : \n");
for (i = 0; i < MAX; i++)
data_urut[i] = data_awal[i];
time(&k1);
BubbleSort(data_urut);
time(&k2);
for (i = 0; i < MAX; i++)
printf("%d ", data_urut[i]);
printf("\n\nWaktu = %ld\n", k2 - k1);
}
Bubble Sort Dan Shell Sort
printf("Hallo Para Programmer!!");
printf("Disini Saya Akan Membahas Mengenai Algoritma Pengurutan Dalam Bahasa C/C++");
printf("Algoritma Pengurutan Yang Saya Bahas Adalah Bubble Sort Dan Shell Sort");
printf("Terus Ikuti Blog Ini Untuk Mendapatkan Artikel Bermanfaat Selanjutnya yah");
printf("Selamat Belajar!!");
Insertion Sort
1. Insertion Sort Secara Ascending
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 20
void InsertionSort(int arr[])
{
int i, j, key;
for (i=1; i<MAX; i++)
{
key = arr[i];
j = i-1;
while(j>=0 && arr[j]>key)
{
arr[j+1] = arr[j];
j--;
}
arr[j+1] = key;
}
}
int main ()
{
int data_awal[MAX], data_urut[MAX];
int i;
time_t k1, k2;
printf("Data sebelum pengurutan : \n");
for(i=0; i<MAX; i++)
{
srand(time(NULL) * (i+1));
data_awal[i] = rand() % 100 + 1;
printf("%d ", data_awal[i]);
}
printf("\n\nData setelah pengurutan : \n");
for(i=0; i<MAX; i++)
data_urut[i] = data_awal[i];
time(&k1);
InsertionSort(data_urut);
time(&k2);
for(i=0; i<MAX; i++)
printf("%d ", data_urut[i]);
printf("\n\nWaktu = %ld\n", k2-k1);
}
2. Selection Sort Secara Ascending
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 20
void SelectionSort(int arr[])
{
int i, j, temp, min, min_id;
i = 10;
while (i < MAX - 1)
{
min_id = i;
min = arr[i];
for (j = i + 1; j < MAX; j++)
if (arr[j] < min)
{
min = arr[j];
min_id = j;
}
temp = arr[min_id];
arr[min_id] = arr[i];
arr[i] = temp;
i++;
}
}
main()
{
int data_awal[MAX], data_urut[MAX];
int i;
time_t k1, k2;
printf("Sebelum pengurutan : \n");
for (i = 0; i < MAX; i++)
{
srand(time(NULL) * (i + 1));
data_awal[i] = rand() % 100 + 1;
printf("%d ", data_awal[i]);
}
printf("\n\nSetelah pengurutan : \n");
for (i = 0; i < MAX; i++)
data_urut[i] = data_awal[i];
time(&k1);
SelectionSort(data_urut);
time(&k2);
for (i = 0; i < MAX; i++)
printf("%d ", data_urut[i]);
printf("\n\nWaktu = %ld\n", k2 - k1);
}
Insertion Sort & Selection Sort
printf("Hallo Para Programmer!!");
printf("Disini Saya Akan Membahas Mengenai Algoritma Pengurutan Dalam Bahasa C/C++");
printf("Algoritma Pengurutan Yang Saya Bahas Disini Adalah Insertion Sort Dan Selection Sort");
printf("Terus Ikuti Blog Ini Untuk Mendapatkan Artikel Bermanfaat Selanjutnya yah");
printf("Selamat Belajar!!");
1. Algoritma Insertion Sort
Salah satu algoritma sorting yang paling
sederhana adalah insertion sort. Algoritma insertion sort pada dasarnya memilah
data yang akan urutkan menjadi 2 bagian, yang belum diurutkan dan yang sudah
diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan dan
kemudian diletakkan sesuai posisinya pada
bagian lain dari array yang telah diurutkan.
Langkah ini dilakukan secara berulang hingga tak ada lagi elemen tersisa
pada bagian array yang belum diurutka.
Metode insection sort merupakan metode yang mengurutkan bilangan- bilangan yang telah terbaca, dan berikutnya secara berulang akan menyisipkan bilangan-bilangan dalam array yang belum terbaca ke sisi kiri array yang telah terurut. Kita mengambil pada bilangan yang paling kiri. Bilangan tersebut dikatakan urut terhadap dirinya sendiri karena bilangan yang di bandingkan baru 1.
|
3 |
10 |
4 |
6 |
8 |
9 |
7 |
2 |
1 |
5 |
Cek bilangan ke 2 (10) apakah lebih kecil dari bilangan yang ke
1(3).Apabila lebih kecil maka ditukar. Tapi
kali ini bilangan ke 1 lebih kecil dari bilangan ke 2 maka tidak ditukar.
|
3 |
10 |
4 |
6 |
8 |
9 |
7 |
2 |
1 |
5 |
|
3 |
10 |
4 |
6 |
8 |
9 |
7 |
2 |
1 |
5 |
Pada kotak warna abu2 sudah dalam keadaan terurut. Kemudian membandingkan lagi pada bilangan selanjutnya yaitu bilangan ke 3 (4). Bandingkan dengan bilangan yang ada di sebelah kirinya. Pada kasus ini bilangan ke 2 bergeser dan digantikan bilangan ke 3.
3 | 10 | 4 | 6 | 8 | 9 | 7 | 2 | 1 | 5 |
3 | 10 | 4 | 6 | 8 | 9 | 7 | 2 | 1 | 5 |
Lakukan langkah seperti di atas pada bilangan selanjutnya. 4 bilangan pertama sudah dalam keadaan terurut relatif. Ulangi proses tersebut sampai bilangan terakhir disisipkan.
3 | 4 | 10 | 6 | 8 | 9 | 7 | 2 | 1 | 5 |
3 | 4 | 6 | 10 | 8 | 9 | 7 | 2 | 1 | 5 |
3 | 4 | 6 | 8 | 10 | 9 | 7 | 2 | 1 | 5 |
3 | 4 | 6 | 8 | 9 | 10 | 7 | 2 | 1 | 5 |
3 | 4 | 6 | 7 | 8 | 9 | 10 | 2 | 1 | 5 |
2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 1 | 5 |
1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 5 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
2. Algoritma Selection Sort
Ide utama dari algoritma selection sort
adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang
terpilih dengan elemen ke-i. Nilai
dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.
Cek seluruh array
dan cari array yang mempunyai
nilai terkecil → index 8 (1).
Setelah ketemu tukar dengan array yang berada di pojok kiri (3).
|
3 |
10 |
4 |
6 |
8 |
9 |
7 |
2 |
1 |
5 |
|
3 |
10 |
4 |
6 |
8 |
9 |
7 |
2 |
1 |
5 |
Setelah di tukar bagian yang berwarna abu-abu merupakan index yang telah terurutkan.
|
1 |
10 |
4 |
6 |
8 |
9 |
7 |
2 |
3 |
5 |
|
1 |
10 |
4 |
6 |
8 |
9 |
7 |
2 |
3 |
5 |
|
1 |
2 |
4 |
6 |
8 |
9 |
7 |
2 |
3 |
5 |
|
1
|
2
|
4
|
6
|
8
|
9
|
7
|
10 |
3
|
5
|
|
1
|
2
|
3 |
6
|
8
|
9
|
7
|
10 |
4 |
5
|
|
1
|
2
|
3 |
6
|
8
|
9
|
7
|
10 |
4 |
5
|
|
1
|
2
|
3 |
4 |
8
|
9
|
7
|
10 |
6 |
5
|
|
1
|
2
|
3 |
4 |
8
|
9
|
7
|
10 |
6 |
5
|
|
1
|
2
|
3 |
4 |
5 |
9
|
7
|
10 |
6 |
8 |
|
1
|
2
|
3 |
4 |
5 |
9
|
7
|
10 |
6 |
8 |
|
1
|
2
|
3 |
4 |
5 |
6 |
7
|
10 |
9 |
8 |
|
1
|
2
|
3 |
4 |
5 |
6 |
7
|
10 |
9 |
8 |
|
1
|
2
|
3 |
4 |
5 |
6 |
7
|
10 |
9 |
8 |
|
1
|
2
|
3 |
4 |
5 |
6 |
7
|
8 |
9 |
10 |
|
1
|
2
|
3 |
4 |
5 |
6 |
7
|
8 |
9 |
10 |