Kamis, 09 Mei 2013

Selection sort


SELECTION SORT

NAMA           : BOBY ADE SAPUTRA     
Ketua KELOMPOK 3 (TIGA)                   
NPM              : 1123006                                                   
KELAS          : D3 TEKNIK INFORMATIKA 1A
===========================================================================
#include<stdio.h>
void tampilkan_larik(int data[], int n)                        //FUNGSI TAMPILKAN LARIK
{
int i;                                                                 //DEKLARASI INDEX UNTUK ARRAY
for (i=0;i<n;i++)                                               //PENGULANGAN UNTUK TAMPILKAN ARRAY
printf("%d\n",data[i]);
printf("\n");
}
void selection_sort_ascending(int data[],int n)          //FUNGSI ASCENDING
{
int posMin,posAwal,j,tmp;                              //DEKLARASI INDEX UNTUK ARRAY
for (posAwal=0;posAwal<n-1;posAwal++)      //ARTINYA ELEMEN TERAKHIR TIDAK DIHITUNG
{
posMin=posAwal;                                            //SET MIN = INDEX ARRAY
for (j=posAwal+1;j<n;j++)                               //MELAKUKAN PERULANGAN SEBAGAI PEMBANDING
if (data[posMin] > data[j])                              //CARI DATA YANG KECIL
posMin=j;                                                        //MIN DIGANTI DENGAN YANG LEBIH KECIL




//PROSES SORTING//
tmp =data[posAwal];                                      //TAMPUNG DATA YANG LAMA
data[posAwal]=data[posMin];            //GANTI ARRAY YANG LAMA DENGAN YANG BARU
data[posMin]=tmp;                             //GANTI ARRAY YANG BARU DENGAN  YANG LAMA
}}
void selection_sort_descending(int data[],int n)        //FUNGSI CASCENDING
{
int posMax,posAwal,j,tmp;                                         //DEKLARASI INDEX UNTUK ARRAY
for (posAwal=0;posAwal<n-1;posAwal++)      //ARTINYA ELEMEN TERAKHIR TIDAK DIHITUNG
{
posMax=posAwal;                               //SET MAX = INDEX ARRAY
for (j=posAwal+1;j<n;j++)                   //MELAKUKAN PERULANGAN SEBAGAI PEMBANDING
if (data[posMax] < data[j])                 //CARI DATA YANG BESAR
posMax=j;                                           //MAX DIGANTI DENGAN YANG LEBIH BESAR

//PROSES SORTING//
tmp =data[posAwal];                          //TAMPUNG DATA YANG LAMA
data[posAwal]=data[posMax];           //GANTI ARRAY YANG LAMA DENGAN YANG BARU
data[posMax]=tmp;                            //GANTI ARRAY YANG BARU DENGAN  YANG LAMA
}}
int main()                                            //FUNGSI MENU DAN INPUTAN
{
int i;                                                     //DEKLARASI INDEX ARRAY
int pilih;                                               //DEKLARASI UNTUK MEMILIH MENU
int n,Urut;                                            //DEKLARASI UNTUK BANYAK DATA
char lagi;                                             //DEKLARASI UNTUK MEMILIH MENU LAGI
int data[100];                                      //DEKLARASI ARRAY
                                                            //APLIKASI DIMULAI



do{
printf("=================================================================\n");
printf("\n Masukan jumlah data:"); scanf("%d",&n);   //MEMASUKAN JUMLAH  DATA
                                                                                     //INPUT ARRAY
Urut = 1;
for(i = 0; i < n; i++) {                                                    //PERULANGAN UNTUK INPUTAN ARRAY
printf("Masukan data ke %d : ", i + 1);
scanf("%d", &data[i]); }
printf("=================================================================\n");
printf("Menu Pengurutan:\n 1.Ascending\n 2.Descending\n");         //MENU PENGURUTAN
printf("Pilih Menu:");scanf("%d",&pilih);                                //MEMILIH MENU PENGURUTAN
if(pilih==1)                                                                              //JIKA MEMILIH MENU 1
{selection_sort_ascending(data,n);                                        //MEMILIH MENU ASCENDING
}else if(pilih==2)                                                                      //JIKA MEMILIH MENU 2
{selection_sort_descending(data,n);                                      //MEMILIH MENU CASCENDING
}else                                                                                        //SELAIN ITU
{printf("Anda salah memilih menu"); }                                   //SALAH MENU
printf("=================================================================\n");
printf("HASIL PENGURUTAN:\n");                               //MENAMPILKAN HASIL PENGURUTAN
tampilkan_larik(data,n);
printf("=================================================================\n");
printf("Apakah Anda akan memilih MENU pengurutan lagi?\n");     //MEMILIH MENU LAGI
printf("pilih y/n:");scanf("%s",&lagi);
}while ((lagi=='y')||(lagi=='Y'));                                 //TEKAN Y JIKA MEMILIH MENU LAGI

return 0;                                                                      //MEMANGGIL  PENGURUTAN ARRAY
}


HASIL COMPILE