1. Program Searching + Sorting Data
Algoritma Searching + Sorting Data
Sourcode :
#include <stdio>
#include <conio>
main(){
int data[100], a, b, i, n, x, y, z;
printf("Berapa banyak data : ");
scanf("%d",&n);
printf("Masukkan data \n");
for(i=0;i<n;i++)
{
printf("Data ke %d : ",i+1);
scanf("%d",&data[i]);fflush(stdin);
}
//sorting
printf("Data Sebelum terurut : ");
for (int i=0;i<n;i++)
{
printf("%d ",data[i]);
}
printf("\n");
for (int i=1;i<=n-1;i++)
{
for (int j=i;j<n;j++)
{
if (data[i-1]>data[j])
{
z = data[i-1];
data[i-1]=data[j];
data[j]=z;
}}}
printf("Data sudah terurut : ");
for(i=0;i<n;i++)
{
printf("%d ",data[i]);
}
printf("\n");
//Searching
a=0;
y=n-1;
printf("Data yang dicari : ");
scanf("%d",&x);fflush(stdin);
while(a<=y)
{
b=(a+y)/2;
if(data[b] == x)
{
printf("\nData ditemukan di posisi ke %d",b+1);
getch();
return(0);
}
if(x > data[b])
a=b+1;
else
y=b-1;
}
printf("Data tidak ditemukan");
getch();
}
Deskriptif :
Algoritma Searching + Sorting Data
- Proses Sorting melakukan Sorting yang efisien sangat dibutuhkan untuk mengoptimisasi penggunaan dari algoritma lain seperti pencarian dan penggabungan yang membutuhkan list terurut untuk berjalan dengan sempurna, yang juga sering digunakan untuk Canonicalisisasi data dan menghasilkan output yang dapat dibaca manusia. Untuk lebih lanjutnya, output harus melengkapi dua syarat ini:
- Output merupakan urutan yang tidak menurut (nondecreasing) (setiap elemen tidak lebih kecil dari elemen sebelumnya menurut dari urutan keseluruhan yang diinginkan.
- Output merupakan permutasi (pengurutan kembali) dari inputan yang diberikan.
- Pencarian(searhing) merupakan proses yang fundamental dalam pengolahan data. Proses pensarian adalah menemukan nilai(data) tertentu didalam sekumpulan data yang bertipe sama (baik bertipe dasar maupun bertipe bentukan).
Sourcode :
#include <stdio>
#include <conio>
main(){
int data[100], a, b, i, n, x, y, z;
printf("Berapa banyak data : ");
scanf("%d",&n);
printf("Masukkan data \n");
for(i=0;i<n;i++)
{
printf("Data ke %d : ",i+1);
scanf("%d",&data[i]);fflush(stdin);
}
//sorting
printf("Data Sebelum terurut : ");
for (int i=0;i<n;i++)
{
printf("%d ",data[i]);
}
printf("\n");
for (int i=1;i<=n-1;i++)
{
for (int j=i;j<n;j++)
{
if (data[i-1]>data[j])
{
z = data[i-1];
data[i-1]=data[j];
data[j]=z;
}}}
printf("Data sudah terurut : ");
for(i=0;i<n;i++)
{
printf("%d ",data[i]);
}
printf("\n");
//Searching
a=0;
y=n-1;
printf("Data yang dicari : ");
scanf("%d",&x);fflush(stdin);
while(a<=y)
{
b=(a+y)/2;
if(data[b] == x)
{
printf("\nData ditemukan di posisi ke %d",b+1);
getch();
return(0);
}
if(x > data[b])
a=b+1;
else
y=b-1;
}
printf("Data tidak ditemukan");
getch();
}
Deskriptif :
Ø #include
<stdio> // Sebagai Header yang memnuat libary untuk memanggil
printf,scanf,gets dan yang lainnya.
Ø #include
<conio>// Sebagai Header yang memnuat libary untuk memanggil getch.
Ø main(){ // Untuk menenntukan awal eksekusi.
Ø
int data[100], a, b, i, n, x, y, z;// int
data[100] kita memesan subuah tempat untuk variabel data adalah 100 tempat, dan
a,b,i,n,x,y,z adalah untuk menunjukkan kalau variabel yang ditunjuk memiliki
nilai yang kita inputkan, atau pun digunakkan untuk menunjuk nilai dari
perulangan.
Ø
printf("Berapa banyak data : "); //
menampilkan berapa banyak data yang mau kita inputkan.
Ø
scanf("%d",&n); //scanf untuk memasukkan
jumlah data dan (“%d ,&n”); untuk menentukkan nilai dari n adalah desimal.
Ø
printf("Masukkan data \n"); //
menampilkan data yang akan dimasukkan.
Ø
for(i=0;i<n;i++) // perulangan untuk jumlah
varibael i adalah 0 dan hasil perulangan dimulai dari 0, maka akan ada
perulangan sebanyak data yang kita masukkan di “n”
Ø
{
Ø
printf("Data ke %d : ",i+1); //untuk
menampil kan hasil desimal dari perulangan i dan tiap perulangannya akan
ditambah 1.
Ø
scanf("%d",&data[i]);fflush(stdin);
// untuk menginputkan data desimal, dan menunjukkan kalau data desimal itu
adalah data[i] yang artinya data[i=hasil dari perulangan yang di tambah 1, dan
fflush(stdin) untuk menghilang kan buffer dari data yang diinputkan
sebelummnya.
Ø
}
Ø
//sorting
Ø
printf("Data Sebelum terurut : "); //menampilkan
text yang ada didalam kurung adalah data yang belum terurut.
Ø
for (int i=0;i<n;i++) // untuk menampilkan data yang belum sorting
karna belum melakukan sorting data.
Ø
{
Ø
printf("%d ",data[i]); // menampilkan
data desimal yang berada di data[i]
Ø
}
Ø
printf("\n"); // memberikan ruang
enter
Ø
for (int i=1;i<=n-1;i++) // untuk perulangan
yang terus berulang sejumlah dengan jumlah data yang kita inputkan.
Ø
{
Ø
for (int j=i;j<n;j++) // untuk pertukaran
variabel data yang dimana nilai data j sama dengan nilai data i, dan nilai data
j kurang dari nilai n.
Ø
{
Ø
if (data[i-1]>data[j]) // jika angka
didata[i-1] lebih besar dibanding dengan angka pada elemen diatasnya, maka akan
data [i-1] akan diubah jadi variabel z.
Ø
{
Ø
z = data[i-1];// z adalah variabel tambahan
untuk melakukan sorting. misal perulangan i ada pada i-4. Dan z=data[4-1]
berarti nilai yng di data[3] di simpan dalam variabel z.
data[i-1]=data[j];
// data[4-1]=data[4] berarti nilai yang di data[3] di ubah jadi nilai data[4]
Ø
data[j]=z; //misal data[4]=z, data[4] nilainya
berubah jadi nilai di data z, yaitu nilai data[3]
Ø
}}}
Ø
printf("Data sudah terurut : ");
//menampilkan text yang ada didalam kurung adalah data yang sudah terurut.
Ø
for(i=0;i<n;i++) // menunjukkan kalau varibel i data yang sudah
tersorting atau terurut.
Ø
{
Ø
printf("%d ",data[i]); // menampilkan
data yang sudha terurut.
Ø
}
Ø
printf("\n"); // memberikan ruang
enter
Ø
// Proses
Searching
Ø
a=0; // untuk menentukkan kalau nilai dari
variabel a adalah 0.
Ø
y=n-1; // untuk menentukkan kalau nilai dari
variabel y adalah n data-data yang sudah kita inputkan
dia awal dan dikurang 1.
Ø
printf("Data yang dicari : ");
//menampilkan text yang ada didalam kurung adalah data yang dicari.
Ø
scanf("%d",&x);fflush(stdin); //
untuk menginputkan data desimal, dan menunjuk kalau data desimal itu adalah x, dan fflush(stdin) untuk menghilang
kan buffer dari data yang diinputkan sebelummnya.
Ø
while(a<=y) // jika nilai a (nilai awal indeks), kurang dari
nilai y ( nilai akhir indeks), maka
akan dilakukan proses searching.
Ø
{
Ø
b=(a+y)/2; // unutuk menentukan nilai dari
variabel b adalah nilai a (indek awal) ditambah nilai y (indeks akhir), dan dibagi 2 karena
menggunakan saerching binary.
Ø
if(data[b] == x) //jiak data[b] == x(x data yang
dicari), maka ditemukan pada data dengan indeks b.
Ø
{
Ø
printf("\nData ditemukan di posisi ke
%d",b+1); // menampilkan posisi
data yang ditemukan adalah desimal, dan menunjukan nilai nya adalah nilai dari b dan akan ditambah 1
Ø
getch(); // menahan program, menunggu pengguna
untuk menginputkan data lagi.
Ø
return(0); // mengembalikan data.
Ø
}
Ø
if(x > data[b]) // jika data dari x lebih besar dari dari data[b]
Ø
a=b+1;
maka a dicari di bagian
sembelah kanan dengan cara menambahkan nilai b menjadi nilai tengah ditambah+1
Ø
else // jika data dari x lebih kecil dari dari data[b]
Ø
y=b-1; maka y
dicari di sebelah kiri dengan cara mengurangkan nilai b menjadi nilai tengah-1
Ø
}
Ø
printf("Data tidak ditemukan"); //
menampilkan data yang tidak ditemukan atau tidak sesuai dengan data yang iinputkan.
Ø
getch();// menahan program, menunggu pengguna
untuk menginputkan data lagi.
}}
}
Semoga Bermanfaat☺☀
No comments:
Post a Comment