Smoga contoh array mergeshort ini dapat membantu kawan-kawan yang sedang kesulitan bikin tugas mergeshort dari dosen pemrograman.
array_indeks_nilai
{ i.s : User memanggil procedure isi_indeks,procedure isi_index,procedure jumlah_index dan procedure tampil_index }
{ f.s : Procedure tampil_index ditampilkan kelayar monitor }
Kamus :
const
maks_indeks=50
type
larik = array [ 1...maks_indeks ] of char
idx : larik
n,i ,idx_A, idx_B, idx_C, idx_D, idx_E , pilihan, l : integer
data : char
procedure create_index ( input maks_index : integer, output idx :larik )
procedure isi_index( I/O idx : larik, output n : integer )
procedure jumlah_index( I/O idx : larik, input n : integer, output idx_A , idx_B, idx_C, idx_D, idx_E : integer )
procedure tampil_index ( input idx : larik, input n, idx_A, idx_B, idx_C, idx_D, idx_E : integer )
prosedure mergesort(input idx : larik, input a : char, input n, bawah, atas : integer)
procedure destroyer(input n : integer, output idx : larik)
function binarysearch(input idx : larik, input n : integer, input data : char)
algoritma :
create_index ( maks_indeks, idx )
output(‘Program Menghitung Nilai Indeks Mahasiswa’)
output(‘------------------------------------------------------------’)
output(‘MENU UTAMA’)
output(‘-------------------’)
output(‘1. Isi Data’)
output(‘2. Cari Data’)
output(‘3. Tampil’)
output(‘0. Keluar’)
input(pilihan)
depend on(pilihan)
1 :
isi_idx ( idx, n )
` 2 :
Mergesort(idx, 0, n-1, n)
Input(data)
I <-- binarysearch(idx, n, data)
If(l = -1)
Output (‘data tidak ditemukan’)
Else
Output(‘data ditemukan’)
3 :
Mergesort(idx, 0, n-1, n)
jumlah_index ( idx, n, idx_A, idx_B ,idx_C, idx_D, idx_E )
tampil_index ( idx, n, idx_A, idx_B, idx_C, idx_D, idx_E )
0 :
destroyer(idx,n)
return 0
Enddepend
procedure create_index ( input maks_indeks : integer, output idx : larik )
{ i.s : User membuat tempat dimemori sebanyak maks_indeks }
{ f.s : User menginisialisasikan tempat tersebut dengan character ' ' }
kamus :
i : integer
algoritma :
for i <-- 1 to maks_indeks do
idx ( i ) <-- ' '
end for
endprocedure
procedure isi_indeks (I/O idx : larik, output n: integer )
{ i.s : User menginputkan nilai n dan nilai idx[i] }
{ f.s : Nilai idx[i] disimpan dalam memori untuk dipanggil dalam prosedur lain }
kamus :
i : integer
algoritma :
input ( n )
for i <-- 1 to n do
input ( idx ( i ) )
endfor
endprocedure
procedure jumlah_index ( I/O idx: larik, input n: integer, output idx_A, idx_B, idx_C, idx_D, idx_E: integer )
{ i.s : User Menginisialisisaikan nilai idx_A, idx_B, idx_C, idx_D, idx_E dengan nilai 0 }
{ f.s : User mennyimpan nilai idx_A, idx_B, idx_C, idx_D, idx_E yang baru dimemori untuk dipanggil dalam prosedur lain}
kamus :
i : integer
algoritma :
idx_A <-- 0
idx_B <-- 0
idx_C <-- 0
idx_D <-- 0
idx_E <-- 0
for i <-- 1 to n do
depend on ( idx ( i ) )
'A' : idx_A <-- idx_A + 1
'B' : idx_B <-- idx_B + 1
'C' : idx_C <-- idx_C + 1
'D' : idx_D <-- idx_D + 1
'E' : idx_E <-- idx_E + 1
enddepend
endfor
endprocedure
procedure tampil_index ( input idx: larik, input n, idx_A, idx_B, idx_C, idx_D, idx_E : integer )
{ i.s : User memanggil nilai idx[i] dan nilai idx_A, idx_B, idx_C, idx_D, idx_E dalam memori }
{ f.s : Nilai idx_A, idx_B, idx_C, idx_D, idx_E ditampilkan dilayar monitor }
kamus :
i : integer
algoritma :
output ( 'Data indeks nilai' )
output ( ' ----------------' )
output ( '!No!Indeks nilai!' )
output ( '-----------------' )
for i <-- 1 to n do
output ( i, idx ( i ) )
endfor
output ( '..............' )
output ( idx_A, idx_B, idx_C, idx_D, idx_E )
endprocedure
prosedure mergesort(input idx : larik, input a : char, input n, bawah, atas : integer)
{i.s : }
{f.s : }
kamus:
i, panjang, tengah, merge1, merge2 : integer
idx2 : char;
algoritma :
i <-- 0
panjang <-- (atas-bawah)+1
tengah <-- 0
merge1 <-- 0
merge2 <-- 0
if(bawah=atas)
return
tengah <-- (bawah+atas)/2
mergesort(a,bawah,tengah,n)
mergesort(a,tengah+1,atas,n)
for i <-- 1 to panjang do
{
idx2[i] <-- a[bawah+1]
merge1 <-- 0
merge2 <-- (tengah-bawah)+1
}
for i <-- 1 to panjang do
{
if(merge2 <= atas-bawah)
if(merge1 <= tengah-bawah)
if(idx2[merge1] > idx2[merge2])
a[i+bawah] <-- idx2[merge2++]
else
a[i+bawah] <-- idx2[merge1++]
else
a[i+bawah] <-- idx2[merge2++]
else
a[i+bawah] <-- idx2[merge1++]
}
endprosedure
procedure destroyer ( input n : integer, output idx : larik )
{ i.s : User menghapus data di memori }
{ f.s : User menginisialisasikan tempat tersebut dengan character ' ' }
kamus :
i : integer
algoritma :
for i <-- 1 to n_do
idx ( i ) <-- ' '
end for
endprocedure
function binarysearch(input idx : larik, input n : integer, input data : char)
{i.s : }
{f.s : }
kamus :
kiri, kanan, tengah : integer
algoritma :
kanan <-- n-1
while(kiri <= kanan)
{
tengah <-- (kiri+kanan)/2
if(idx[tengah]=data)
return tengah;
else
{
if(idx[tengah] <>
kiri <-- tengah+1
else
kanan <-- tengah+1
}
}
return -1
Read Full...