1. Memberikan / memasukkan bilangan secara acak menjadi non-urutan menggunakan metode penyisipan
2. Mengidentifikasi input dan output
4. Test fungsi menggunakan Data uji
5. Penulisan pengkodean
2. Mengidentifikasi input dan output
Input :
i = Integer
n = Integer
k = integer
x = integer
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
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
AKHIR – UNTUK
AKHIR – SUBRUTIN
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 |
10↔4
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 |
10↔6
Kemudian sisipkan bilangan keempat keposisi ketiga karena bilangan keempat lebih kecil dibandingkan bilangn ketiga.
3 | 4 | 6 | 10 | 8 | 9 | 7 | 2 | 1 | 5 |
10↔8
3 | 4 | 6 | 8 | 10 | 9 | 7 | 2 | 1 | 5 |
10↔9
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 |
8↔7
Ulangi proses tsb sampai bilangan terakhir disisipkan.
3 | 4 | 6 | 7 | 8 | 9 | 10 | 2 | 1 | 5 |
3↔2
2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 1 | 5 |
2↔1
1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 5 |
6↔5
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
selesai
#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