Pengertian Sorting
Sorting
adalah proses pengurutan data yang
sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut
suatu aturan tertentu. Pada umumnya
terdapat 2 cara pengurutan data yaitu :
· - Ascending :
Pengurutan dilakukan mulai dari nilai terkecil menuju nilai terbesar
· -
Descending:
Pengurutan dilakukan mulai dari nilai terbesar menuju nilai terkecil
Ada beberapa cara
dalam melakukan sorting, namun kali ini saya akan mencoba membahas sorting
dengan metode selection sort dan insertion sort.
Selection sort
Selection
sort adalah kombinasi
antara sorting dan searching, Untuk setiap proses akan dicari elemen-elemen yang
belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan
ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan
dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks
terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan
akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan
pengubahan hanya dilakukan pada indeks pembanding saja,
pertukaran data secara fisik terjadi pada akhir proses.
Prosedur Selection Sort
void selection_sort()
{
for(int
i=0;i<n-1;i++)
{
pos = i;
for(int j=i+1;j<n;j++)
{
if(data[j]
< data[pos]) pos = j; //ascending
}
if(pos
!= i) tukar(pos,i);
}
}
Insertion Sort
Mirip dengan cara orang mengurutkan kartu,
selembar demi selembar kartu diambil
dan disisipkan (insert) ke tempat
yang seharusnya. Pengurutan dimulai dari data ke-2 sampai dengan data terakhir,
jika ditemukan data
yang lebih kecil, maka akan
ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan elemen,
maka elemen-elemen lain akan bergeser ke belakang.
Prosedur Insertion Sort
void insertion_sort()
{
int temp;
for(int
i=1;i<n;i++)
{
temp
= data[i];
j = i
-1;
while(data[j]>temp
&& j>=0)
{
data[j+1] = data[j];
j--;
}
data[j+1]
= temp;
}
}
Program Lengkap :
#include
<stdio.h>
#include
<conio.h>
int data[10],data2[10];
int n;
void tukar(int
a,int b)
{
int t;
t =
data[b];
data[b]
= data[a];
data[a]
= t;
}
void selection_sort()
{
int pos,i,j;
for(i=0;i<n-1;i++)
{
pos = i;
for(j =
i+1;j<n;j++)
{
if(data[j]
< data[pos]) pos = j;
}
if(pos
!= i) tukar(pos,i);
}
printf("selection
sort selesai!\n");
}
void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp
&& j>=0)
{
data[j+1] = data[j];
j--;
}
data[j+1]
= temp;
}
printf("insertion
sort selesai!\n");
}
void Input()
{
printf("Masukkan
jumlah data = ");scanf("%d",&n);
for(int
i=0;i<n;i++)
{
printf("Masukkan
data ke-%d =
",(i+1));scanf("%d",&data[i]);
data2[i] = data[i];
}
}
}
void main()
{
clrscr();
int pil;
do
{
clrscr();
printf("1.
Input Data\n");
printf("1.
Selection Sort\n");
printf("2.
Insertion Sort\n");
printf("4.Exit\n");
printf("Pilihan
= ");scanf("%d",&pil);
switch(pil)
{
case 1:Input();break;
case 2:bubble_sort();break;
case 3:exchange_sort();break;
case 4:selection_sort();break;
case 5:Tampil();break;
}
getch();
}while(pil!=4);
}
sumber :
sumber :
Tidak ada komentar:
Posting Komentar