Selasa, 03 Mei 2016

Diktat 8

5. Urutkan deret angka berikut dengan selection sort dan tuliskan hasil tiap langkah (step) :
21 16 25 8 19 4 1

Step :


[21, 16, 25, 8, 19, 4, 1]
Data pertama : 21
Mencari data terkecil dari data kedua sampai terakhir.
(i=1)
Data terkecil ditemukan pada posisi ke-7 (t=7), maka data pertama ditukar pada posisi ke-7, menjadi:
[1, 16, 25, 8, 19, 4,21]
Langkah ini diulang untuk data kedua (i=4). Ditemukan pada posisi ke-6 (t=6).
Data kedua ditukar dengan data ke-6, menjadi :
[1, 4, 25, 8, 19,16,  21]

Fase selengkapnya :
Data awal :          [21, 16, 25, 8, 19, 4, 1]            1 terkecil, 21               1
Fase 1              [1, 16, 25, 8, 19, 4, 21]            4 terkecil, 16               4
Fase 2              [1, 4, 25, 8, 19, 16, 21]            8 terkecil, 25               8
Fase 3              [1, 4, 8, 25, 19, 16, 21]            16 terkecil, 25             16
Fase 4              [1, 4, 8, 16, 19, 25, 21]            19 terkecil, 19             19
Fase 5              [1, 4, 8, 16, 19, 25, 21]            21 terkecil, 25             21
Fase 6              [1, 4, 8, 16, 19, 21, 25]            25 terkecil tetap.
Fase 7              [1, 4, 8, 16, 19, 21, 25]           
Fase 8              [1, 4, 8, 16, 19, 21, 25]

Algoritma 

Deklarasi :
data : integer (input)
data2 : integer (input)
n : integer(input)
t : integer (variabel penampung)
Description :
Write ("masukan data")
Nß input
For(int i=1;i<=n;i++)then
Write(“masukan data ke-i”)
Data[i] ßinput
Data2[i]=data[i];
Write("Data Setelah di Sort  ")
For (int i=1; i<=n; i++)then
Write('data[i]')

Dev C++

source code :

#include <iostream>
#include <conio.h>
using namespace std;
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=1;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);
 }
}

int main()
{
 cout<<"URUT DERET ANGKA DENGAN SELECTION SORT"<<endl<<endl;

 cout<<"Masukkan Jumlah Data : ";
 cin>>n;
 for(int i=1;i<=n;i++)
 {
  cout<<"Masukkan data ke "<<i<<" : ";
  cin>>data[i];
  data2[i]=data[i];
 }

 selection_sort();
 cout<<"Data Setelah di Sort : ";
 for(int i=1; i<=n; i++)
 {
  cout<<" "<<data[i];
 }

 getch();

}

outputnya :

6. Diketahui deret angka sebagai berikut :
5 2 4 6 1 3
Dari deret angka tersebut, lakukan pengurutan dari yang paling kecil sampai paling besar menggunakan insertion sort !

Algoritma :

Deklarasi :
i,j : integer (input)
temp : integer (variabel penampung)
Proses :
Write ("masukan jumlah data ")
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;

Dev C++

source code :

#include <iostream>
#include <conio.h>
using namespace std ;
int data[10],data2[10];
int 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;
 }
}
int main()
{

//INPUT DATA
 cout<<"Masukkan Jumlah Data : ";
 cin>>n;
 cout<<endl;
 for(int i=1;i<=n;i++)
 {
  cout<<"Masukkan data ke-"<<i<<" : ";
  cin>>data[i];
  data2[i]=data[i];
 }

 insertion_sort();

 cout<<endl<<endl;

 //MENAMPILKAN DATA
 cout<<"Data Setelah di Sort : ";
 for(int i=1; i<=n; i++)
 {
  cout<<" "<<data[i];
 }
 cout<<endl<<endl<<"Sorting Selesai";
 getch();
}

outputnya :


7. Mari kita lihat daftar nomor dari sebuah array untuk melihat bagaimana cara merge sort
bekerja :
32 12 5 18 31 4 25 7
[0] [1] [2] [3] [4] [5] [6] [7]
Lakukan sorting dari data dalam array di atas menggunakan merge sort sehingga nomor paling kecil berada paling depan samapai yang paling besar berada paling belakang !

Step

Algoritma :

Deklarasi :
a : integer(input)
low, high,mid : integer
merge : void
Proses :
 if(low<high)  
  mid=(low+high)/2;  
  merge_sort(low,mid);  
  merge_sort(mid+1,high);  
  merge(low,mid,high)

 while((h<=mid)&&(j<=high))  
  if(a[h]<=a[j])  
   
   b[i]=a[h]; h++;  
  
  else  
   
   b[i]=a[j]; j++;  
  i++;  

 if(h>mid)  
  
  for(k=j;k<=high;k++)  
   
   b[i]=a[k]; i++;  
   
 else  
   
  for(k=h;k<=mid;k++)  
    
   b[i]=a[k]; i++;  
   
 for(k=low;k<=high;k++)  
  a[k]=b[k];  
Dev C++
source code :

#include <iostream>  
#include <conio.h>  
using namespace std;
int a[50];  
void merge(int,int,int);  
void merge_sort(int low,int high)  
{  
 int mid;  
 if(low<high)  
 {  
  mid=(low+high)/2;  
  merge_sort(low,mid);  
  merge_sort(mid+1,high);  
  merge(low,mid,high);  
 }  
}  
void merge(int low,int mid,int high)  
{  
 int h,i,j,b[50],k;  
 h=low;  
 i=low;  
 j=mid+1;  
 while((h<=mid)&&(j<=high))  
 {  
  if(a[h]<=a[j])  
  {  
   b[i]=a[h]; h++;  
  }  
  else  
  {  
   b[i]=a[j]; j++;  
  } i++;  
 }  
 if(h>mid)  
 {  
  for(k=j;k<=high;k++)  
  {  
   b[i]=a[k]; i++;  
  }  
 }  
 else  
 {  
  for(k=h;k<=mid;k++)  
  {  
   b[i]=a[k]; i++;  
  }  
 }  
 for(k=low;k<=high;k++)  
  a[k]=b[k];  
}  
int main()  
{  
 int num,i,b; 
 cout<<"***************************"<<endl;  
 cout<<" MERGE SORT PROGRAM "<<endl;  
 cout<<"***************************"<<endl;  
 cout<<endl<<endl;  
 cout<<"Masukkan Banyak Bilangan: ";cin>>num;  
   cout<<endl;  
 cout<<"Sekarang masukkan "<< num <<" Bilangan yang ingin Diurutkan :"<<endl;  
 for(b=1;b<=num;b++)  
 {  
  cout<<"Bilangan ke-"<<b<<" : ";cin>>a[b] ;  
 }  




 merge_sort(1,num);  
 cout<<endl;  
 cout<<"Hasil akhir pengurutan :"<<endl;  
 cout<<endl;  
 for(i=1;i<=num;i++)  
  cout<<a[i]<<" ";  
 cout<<endl<<endl<<endl<<endl;

   getch();  
}  
outputnya :



Silahkan kunjungi untuk no :
8-10 : agus prasetyo

Tidak ada komentar:

Posting Komentar