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
Program Mergeshort
Langganan:
Posting Komentar (Atom)
1 komentar:
tq ya kaks for programnya
Posting Komentar