• Tidak ada hasil yang ditemukan

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

N/A
N/A
Protected

Academic year: 2022

Membagikan "Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C"

Copied!
13
0
0

Teks penuh

(1)

TUGAS STRUKTUR DATA

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

IF-5 Nama Anggota :

- Rohendi 10107193 - Andri Andriyan 10107210 - Yuli Yanti A 10107218 - Jajang Kusmita 10107227

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA 2009

(2)

Algoritma

procedure create_abjad (output abjad : larik, input maks_abjad : integer ) { I.S = user memasukkan nilai bertipe integer }

{ F.S = menampilkan abjad } Kamus

i : integer Algoritma

for i 1 to maks_abjad do abjad

endfor

endprocedure

procedure isi_abjad ( I/O abjad : larik, output n : integer)

{ I.S = user mamaskukn jumlah karakter dan memasukan karakter } { F.S = menampilkan nilai abjad }

Kamus i : integer Algoritma Input (n) for i 1 to n do

input ( abjad (n)) endfor

endprocedure

procedure abjad_terkecil ( I/O abjad: larik, input n: integer, output min: integer) { I.S = harga untuk variabel abjad sudah terdefinisi}

{ F.S = mencari abjad terkecil}

Kamus i : integer Algoritma

min abjad (1) for i 1 to n do

if ( abjad (i) min ) then

min abjad (i) endif endfor

endprocedure

procedure abjad_terbesar ( I/O abjad: larik, input n : integer, output max integer) { I.S = harga untuk variabel abjad sudah terdefinisi }

{ F.S = mencari abjad terbesar}

Kamus i : integer

(3)

Algoritma

min abjad (1) for i 1 to n do if ( abjad (i) max ) then

max abjad (i) endif

endfor endprocedure

procedure binary_search(input abjad : larik, n : integer, input x : char) { I.S = elemen abjad sudah terdefinisi }

{ F.S = menghasilkan pencarian bagi dua}

Kamus

k, ia, ib : integer ketemu : bolean Algoritma ia 0 ib n-1 ketemu false

while ( not ketemu ) and (ia ib) do k (ia + ib ) div 2

if ( x = abjad(k)) then

ketemu

true else

if (x > abjad(k)) then

ia k + 1 else

ib k - 1 endif

endif endwhile

if ( ketemu = 1 ) then

output( Data yang dicari : , x ) output( ada pada indeks ke . k+1 ) else

output( data tidak ditemukan ) endif

endprocedure

procedure shortShell(input abjad : larik, n : integer) { I.S = elemen abjad sudah terdefinisi }

(4)

{ F.S = menghasilkan pengurutan shell sort}

Kamus

j,i,k,m,n ,mid : integer Algoritma

j 0

for m n div 2 to 0 do m

mod 2 forj m to n do j j+1

for i j-m to 0 do i i - m

if (abjad(i+m) >= abjad(i)) then

mid abjad(i)

abjad(i) abjad(i+m) abjad(i+m) mid endif

endfor endfor

endfor

endprocedure

procedure tampil_abjad (input abjad : larik, n : integer, input max, min : char) { I.S = harga untuk variable max dan min sudah terdefinisi }

{ F.S = menampilkan abjad terendah dan abjad tertinggi}

Kamus i, : integer Algoritma

output( Array Before Sorting ) output( __________________ ) for i 1 to n do

output ( abjad (i)) endfor

shellsort(abjad,n);

output( Array After Before Sorting ) output( __________________ ) for i 1 to n do

output ( abjad (i)) endfor

output( __________________ ) output (min, max)

output( __________________ ) endprocedure

(5)

procedure destroy_abjad(I/O abjad : larik, n : integer) { I.S = elemen-elemen sudah terdefinisi }

{ F.S = menghasilkan penhancuran elemen}

Kamus i, : integer

Algoritma

for i 1 to n do

create_abjad(abjad,maks_abjad) exit 0

endfor endprocedure

{ Algoritma Utama } Array_abjad

{ I.S = user memasukan sejumlah abjad bertipe karakter}

{ F.S = memampilkan abjad dimasukan oleh user dan menampilkan abjad terendah dan abjad tertinggi }

Kamus Const

Maks_abjad : 50 Type

Larik : array [1..maks_abjad] of char

abjad : larik

n , i, tekan, : integer max, min, x : char

procedure create-abjad (output abjad : larik, input maks_abjad : integer ) procedure isi_abjad ( I/O abjad : larik, output n : integer )

procedure abjad_terendah ( I/O abjad:larik, input n: integer, output min:integer) procedure abjad_tertinggi ( I/O abjad: larik, input n:integer, output max integer) procedure binary_search(input abjad : larik, n : integer, input x : char)

procedure shortShell(input abjad : larik, n : integer)

procedure tampil_abjad (input abjad : larik, n : integer, input max, min : char) procedure destroy_abjad(I/O abjad : larik, n : integer)

Algoritma

repeat

output(" Menu Pilihan")

output ("___________________") output (" 1. Isi Data ")

output (" 2. Cari Data ")

(6)

output (" 3. Tampil Data ") output (" 0. Keluar ")

output ("___________________") output (" Masukkan pilihan anda : ") input (menu)

case(tekan)

'1' : isi_abjad(abjad, n) '2' : binarySearch(abjad,n,x) '3' : abjad_terkecil(abjad, max, n) abjad_terbesar(abjad, min, n) tampil(abjad, max, min, n)

'0' : destroy_abjad(abjad, n) until(tekan 0)

Source Code

#include <stdio.h>

#include <stdlib.h>

#include <conio2.h>

const int maks_abjad=50;

typedef char larik [maks_abjad];

void create_abjad(larik abjad, int maks_abjad);

void isi_abjad(larik abjad, int *n);

void abjad_terkecil(larik abjad, char *min, int n);

void abjad_terbesar(larik abjad, char *max, int n);

void binarySearch(larik abjad, int n, char x);

void shellsort(larik abjad,int n);

void tampil(larik abjad, char min, char max, int n);

void destroy_abjad(larik abjad,int n);

void create_abjad(larik abjad, int maks_abjad) {

int i;

for (i=0; i<maks_abjad; i++) {

abjad[i]=' ';

} }

void isi_abjad(larik abjad, int *n) {

int i;

printf("\n Masukkan banyak abjad : ");scanf("%i", n);

for (i=0; i<*n; i++)

(7)

{

printf ("\n Abjad ke-%i : ",i+1);abjad[i]=getche();

} }

void abjad_terkecil(larik abjad, char *min, int n) {

int i;

*min=abjad[0];

for (i=1; i<n; i++) {

if ( abjad[i] <= *min) {

*min=abjad[i];

} } }

void abjad_terbesar(larik abjad, char *max, int n) {

int i;

*max=abjad[0];

for (i=1; i<n; i++) {

if ( abjad[i] >= *max) {

*max=abjad[i];

} } }

void binarySearch(larik abjad, int n, char x) {

int ia,ib,k;

int ketemu;

ia = 0;

ib = n-1;

ketemu = 0;

printf("\n Data cari : "); x = getche();

while (!ketemu && ia <= ib) {

k=(ia+ib)/2;

if (x == abjad[k]) {

ketemu=1;

}

else if (x > abjad[k])

(8)

{

ia = k + 1;

} else {

ib = k - 1;

} }

if (ketemu==1) {

printf(" \n\n Data Ditemukan \n ");

printf(" ada pada indeks ke %i \n", k+1);

} else {

printf(" \n\n data tidak ditemukan");

} }

void shellsort(larik abjad,int n) {

int j,i,k,m,mid;

for(m = n/2;m>0;m/=2) {

for(j = m;j< n;j++) {

for(i=j-m;i>=0;i-=m) {

if(abjad[i+m]>=abjad[i]) break;

else {

mid = abjad[i];

abjad[i] = abjad[i+m];

abjad[i+m] = mid;

} } } } }

void tampil(larik abjad, char min, char max, int n) {

int i;

printf("\n Array Befor Sorting \n");

printf(" _____________________\n\n");

(9)

for (i=0; i<n; i++) {

printf(" Abjad ke %i : %c \n", i+1, abjad[i]);

}

shellsort(abjad,n);

printf("\n Array After Sorting \n");

printf(" _____________________\n\n");

for(i=0;i<n ;i++) {

printf(" Abjad ke %i : %c \n", i+1, abjad[i]);

}

printf(" _____________________\n\n");

printf(" Abjad Terkecil : %c \n", min);

printf(" Abjad Terbesar : %c \n", max);

printf(" _____________________\n\n");

}

void destroy_abjad(larik abjad,int n){

create_abjad(abjad,maks_abjad);

}

void menu(void) {

gotoxy(2,2);printf(" Menu Pilihan");

gotoxy(2,3);printf("___________________");

gotoxy(2,5);printf(" 1. Isi Data ");

gotoxy(2,6);printf(" 2. Cari Data ");

gotoxy(2,7);printf(" 3. Tampil Data ");

gotoxy(2,8);printf(" 0. Keluar \n");

gotoxy(2,9);printf("___________________");

gotoxy(2,11);printf(" Masukkan pilihan anda : ");

} main() {

larik abjad;

char max,min,x;

int i, n,tekan;

do {

menu();

tekan=getch();

(10)

switch(tekan) {

case '1' : clrscr();

isi_abjad(abjad, &n);

getch();

clrscr();

break;

case '2' : clrscr();

binarySearch(abjad,n,x);

getch();

clrscr();

break;

case '3' : clrscr();

abjad_terkecil(abjad, &max, n);

abjad_terbesar(abjad, &min, n);

tampil(abjad, max, min, n);

getch();

clrscr();

break;

case '4' : clrscr();

destroy_abjad(abjad, n);

} }

while(tekan !='0');

}

Tampilan

Tampilan Depan

(11)

Tampilan Isi Data

Tampilan Data Cari

Tampilan Data, Mencari Abjad Tertiggi, Terendah Dan Pengurutan

(12)

KONTRIBUSI MASING - MASING ANGGOTA

- Rohendi (10107193) : Mengedit dan membuat tampilan program.

- Andri Andriyan (10107210) : Membuat program, ide program, dan membuat tampilan program.

- Yuli Yanti A (10107218) : Mengedit algoritma, mengumpulkan referensi, mencetak .

- Jajang Kusmita (10107227) : Membuat algoritma mengumpulkan referensi.

ngeprint, penyedia komputer .

(13)

This document was created with Win2PDF available at http://www.daneprairie.com.

The unregistered version of Win2PDF is for evaluation or non-commercial use only.

Referensi

Dokumen terkait

Kesimpulan dari penelitian ini bahwa pemberian silase klobot jagung dalam ransum sampai level 70% dari total ransum domba lokal jantan menghasilakan konsumsi bahan kering,

penggunaan pokem sebagai bahan pakan alternatif terhadap kualitas fisik daging ayam pedaging memberikan perbedaan pengaruh yang nyata (P&lt;0,05) terhadap susut masak; tidak

KODE 1 2 5 6 URAIAN NILAI 7 4 NILAI NILAI MUTASI NILAI BERTAMBAH BERKURANG SALDO PER 30 JUNI 2019 SALDO PER 1 JANUARI 2019 SAT.. KUANTITAS KUANTITAS

pihak manajemen terhadap lembaga/perusahaan, atau produk yang ditampilkan lebih dikenal (good awareness), menyenangkan dan diterima dengan kesan yang positif yang

[r]

Hasil penelitian didapat slump dan kuat tekan beton yang menggunakan bahan tambahan plasticizer lebih besar dari pada beton normal. Dengan nilai slump yang tinggi

Bab 3 berisi deskripsi masalah, deskripsi kini, deskripsi usulan, analisis kebutuhan akuntansi berupa coa koperasi, mapping, posting transaksi, dan laporan keuangan koperasi,

Sedangkan  Siswa  emosional  dapat  diartikan  sebagai  siswa  yang  mengalami  emosi  yang  tidak  normal,  keadaan  emosi  yang  dialami  mengakibatkan  gangguan