Selamat Datang di Blog Sederhana Saya

Selasa, 24 Mei 2011

Ebook How to solve 5.4

1.      Memberikan / memasukkan bilangan secara acak menjadi non-urutan menggunakan metode penyisipan
2.      Mengidentifikasi input dan output
Input :
i = Integer
n = Integer
k = integer
x = integer
Output :
           ketemu = integer

 3.      Algoritma untuk mendefinisikan fungsi
Deklarasi :
            i, n, k, x, data = integer

Deskripsi :
Insertionsort(L,n)
UNTUK k <-- 1 S/D n-1
X <--L[k]
//Sisipkan x ke dalam L[0..k-1]
I<-- k – 1
Ketemu <-- SALAH
ULANG SEMUA I >= 0 DAN TIDAK ketemu
JIKA x < L[I] MAKA
L[i + 1] <-- L[i]
i <--i – 1
SEBALIKNYA
Ketemu = BENAR
AKHIR – JIKA

L[i+1]<--x
AKHIR – ULANG
AKHIR – UNTUK
AKHIR – SUBRUTIN

4.      Test fungsi menggunakan Data uji
 
Data awal :     
3
10
4
6
8
9
7
2
1
5
3 ↔10
Cek, untuk melihat apakah bilangan kedua (10) lebih kecil dari pada yang pertama (3). Jika ya, tukarkan kedua bilangan ini. Namun, kali ini kita tidak perlu melakukan penukaran.
3
10
4
6
8
9
7
2
1
5
104
Ambil bilangan ketiga (4), Geser bilangan kedua (10) shg ada ruang untuk disisipi. Sisipkan bilangan 4 ke posisi yang tepat
           
3
4
10
6
8
9
7
2
1
5
106
Kemudian sisipkan bilangan keempat keposisi ketiga karena bilangan keempat lebih  kecil dibandingkan bilangn ketiga.
3
4
6
10
8
9
7
2
1
5
108           
3
4
6
8
10
9
7
2
1
5
109
Sekarang, tiga bilangan pertama sudah terurut secara relative dan kita sisipkan bilangan keempat kepada tiga bilangan pertama tsb. Setelah penyisipan, empat bilangan pertama haruslah dalam keadaan terurut secara relatif.

3
4
6
8
9
10
7
2
1
5
87
Ulangi proses tsb sampai bilangan terakhir disisipkan.

3
4
6
7
8
9
10
2
1
5
32
2
3
4
6
7
8
9
10
1
5
21
1
2
3
4
6
7
8
9
10
5
65
1
2
3
4
5
6
7
8
9
10

selesai


5.      Penulisan pengkodean

#include <iostream.h>
#include <conio.h>

void tampilkan_larik(int data[],int n)
{
int i;

for (i=0; i<n;i++)
cout<<data[i]<<" ";
cout<<"\n";
}

void insertion_sort(int data[], int n)
{
int i,k;
int x;
int ketemu;
for (k=1; k<n; k++)
{
x=data[k];
//sisipkan x ke dalam data [0...k-1]

i=k-1;
ketemu=0;

while ((i>=0)&&(!ketemu))
{
if (x<data[i])
{
data[i+1]=data[i];
i=i-1;
}
else
ketemu=1;
data[i+1]=x;
}
}
}

int main()
{
const jum_data=10;

int i;
int data[]={3,10,4,6,8,9,7,2,1,5};
cout<<"Data sebelum diurut: "<<endl;
for(int ctr=0; ctr<10; ctr++)
{
cout<<data[ctr]<<" ";
}
insertion_sort(data, jum_data);

//hasil pengurutan
cout<<endl;
cout<<endl;
cout<<"Tampilkan Hasil Pengurutan: \n";
tampilkan_larik(data,jum_data);
getch();
}


0 komentar:

Posting Komentar