Sorting (Pengurutan Data)
Sorting merupakan sebuah metode pengurutan data, biasa digunakan dalam array untuk mengurutkan data yang ada didalamnya.
Sorting dibedaan dari cara pembandingan nilai juga dari kecepatan dalam proses pengurutan data, macam dari sorting memiliki kekurangan juga kelebihan masing masing tergantung bagaimana metode tersebut digunakan
macam macam sorting :
Bubble sort
Bubble sort merupakan algoritma pengurutan / metode sorting paling
sering digunakan dengan metode pengurutan paling sederhana. pada metode
bubble sort, Pengurutan yang dilakukan dengan cara membandingkan
masing-masing item / data dalam suatu list secara berpasangan, lalu
menukar item tersebut jika diperlukan, dan mengulanginya sampai akhir
list secara berurutan dengan sempurna, sehingga tidak ada lagi item yang
dapat ditukar.
contoh coding sorting buble sort C++
#include<stdio.h>
#include<conio.h>
#define Mak 20
#include "boolean.h"
#include<conio.h>
#define Mak 20
#include "boolean.h"
typedef struct {
int T[Mak+1];
int nEff ;
}TabInt ;
void CreateTab(TabInt *T);
void IsiTab(TabInt *T, int x);
void CetakTab(TabInt T);
void UrutBubble(TabInt *T);
int main () {
int x;
TabInt MyTab;
clrscr ();
CreateTab(&MyTab);
printf("Masukan nilai :"); scanf("%d",&x);
while(x!=9999){
IsiTab(&MyTab, x);
printf("Masukan Nilai :") ; scanf("%d",&x);
}
printf("Isi Tabel Belum Terurut \n");
CetakTab(MyTab);
UrutBubble(&MyTab);
printf("Isi tabel sesudah terurut \n");
CetakTab(MyTab);
getch();
return 0;
}
//body
void CreateTab(TabInt *T){
(*T).nEff = 0 ;
}
void IsiTab(TabInt *T,int x){
if((*T).nEff<Mak){
(*T).nEff++;
(*T).T[(*T).nEff]= x;
}
}
void CetakTab(TabInt T){
int i;
for(i=1;i<=T.nEff;i++){
printf("\n %d",T.T[i]);
}
printf("\n");
}
void UrutBubble(TabInt *T){
int i,j,tmp ;
int N;
N=(*T).nEff;
for(i=N;i>1;i--){
for(j=2;j<=i;j++){
if((*T).T[j-1] > (*T).T[j]){
//pertukaran tempat
tmp = (*T).T[j-1];
(*T).T[j-1]=(*T).T[j];
(*T).T[j] = tmp;
}
}
}
}
Selection Sort
hampir sama dengan buble sort, hanya dalam selection sort ada posisi sebagai posisi acuan untuk akhinya dibandingkan dengan entri yang ada sampai posisi acuan berada di akhir larik.
Heap Sort
Heap sort merupakan metode sorting yang menggunakan struktur data heap, dengan
nilai parent selalu lebih besar dari pada nilai childnya.
contoh penggunaan heap sort C++
#include <stdio.h>
#define nmax 10
void tukar (int *x, int *y){
int temp;
temp = *x;
*x =*y;
*y= temp;
}
void ubah (int list [],int i,int n){
int j,k,flag;
k= list[i];
flag =1;
j=2 *i;
while (j <= n && flag){
if (j < n && list[j] < list [j+1])
j++;
if ( k >= list [j])
flag =0;
else
{
list [j/2]= list [j];
j=j * 2;
}
}
list [j/2] =k;
}
void heap_awal (int list [], int n){
int i;
for (i=(n/2);i>=0;i--)
ubah (list,i,n-1);
}
void pengurutanheap (int list [], int n){
int i;
heap_awal (list,n);
for(i=(n-2);i>=0;i--){
tukar(&list [0], &list[i+1]);
ubah(list,0,i);
}
}
void bacaList ( int list [],int n)
{
int i;
printf ("Masukan Elemen:\n");
for (i=0;i<n;i++)
scanf ("%d",&list[i]);
}
void tampillist (int list [],int n){
int i;
printf ("Sebagai Berikut:\n");
for (i=0;i<n;i++)
printf ("%d\t",list [i]);
printf ("\n");
}
main (){
int list [nmax],n;
printf ("Masukan Jumlah \nElemen Di dalam list, Max=10:\n");
scanf ("%d",&n);
bacaList(list,n);
printf ("\nList Sebelum Pengurutan adalah:\n");
tampillist (list,n);
pengurutanheap (list,n);
printf ("List Setelah Pengurutan adalah:\n");
tampillist (list,n);
scanf ("%d",n);
}
0 comments:
Posting Komentar