Jumat, 19 Mei 2017

Struktur Data - Sort & Bubble Sort






Struktur Data - Sort & Bubble Sort
SORT ( PENGURUTAN )
Apa itu Sort ( Pengurutan ) ?
Sort atau pengurutan dalam pemprograman digunakan untuk mengurutkan ( baik secara ascending atau descending ) beberapa bilangan / karakter yang sama tipenya. Sort dipergunakan agar user / pengguna atau programmer dapat mengetahui nilai yang terkecil sampai dengan nilai terbesar atau sebaliknya. Sort biasanya digunakan di dalam aplikasi - aplikasi yang berhubungan dengan banyak data.
Apa ciri - ciri Sort ( Pengurutan ) ?
Pengurutan data dalam struktur data sangat penting untuk data yang bertipe numerik ataupun karakter.
Pengurutan dapat dilakukan secara ascending ( ururt naik ) dan descending ( urut turun )
Pengurutan ( Sorting ) adalah proses menyusun kembali data yang sebelumnya telah tersusun secara teratur menurut aturan tertentu
Metode Pengurutan Data
Pengurutan berdasarkan perbandingan ( comparison - based sorting ) -> Bubble sort, exchange sort
Pengurutan berdasarkan prioritas ( priority queue sorting method ) -> Selection sort, heap sort
Pengurutan berdasarkan penyisipan dan penjagaan terurut ( insert and keep sorted method ) -> Insertion sort, tree sort
Pengurutan berdasarkan pembagian dan penguasaan ( devide and conquer method ) -> Quick sort, merge sort
Pengurutan berkurang menurun ( diminishing increment sort method ) -> Shell sort
Disini saya akan membahas 4 macam teknik sort yakni :
Bubble Sort
Insertion Sort
Quick Sort
Selection Sort
Teknik - teknik tersebut mempunyai tujuan yang sama yakni mengurutkan data. Teknik yang satu dengan yang lainnya mempunyai kelemahan dan kelebihan masing - masing.
Apa itu Bubble Sort ?
Metode bubble sort merupakan metode pertama yang paling banyak dipelajari oleh programmer. Karena lebih sederhana, akan tetapi Bubble Sort sendiri memiliki kelemahan / kekurangan, seperti :
Bubble sort tidak efisien dan menyita banyak waktu processor dibandingkan dengan metode Sorting yang lain.
Penggunaan bubble sort masih terlihat baik jika jumlah data / elemen yang diinputkan tidak lebih dari 30 atau kurang dari 30 elemen.
Metode gelembung / penukaran adalah metode yang mendasarkan penukaran 2 buah elemen untuk mencapai keadaan urut yang diinginkan. Disebut sebagai bubble sort atau gelembung karena algoritma ini memang mirip tingkah gelembung udara dalam air. Gelembung naik perlahan - lahan ke permukaan air. Algoritma ini merupakan algoritma paling dasar dan paling lambat karena tekniknya adalah dengan membandingkan satu angka dengan angka - angka yang lain dalam deret dan jika angka yang dibandingkan lebih besar daripada angka pembanding, maka nilainya dipertukarkan ( swap )
Ciri - ciri Bubble Sort
Metode sorting termudah
Merupakan proses pengurutan secara berangsur - angsur bergerak / berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda
Pengurutan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya
Pengurutan ascending : jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar
Pengurutan descending : jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar
Algoritma ini seolah - olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya
Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses. Demikian seterusnya dari 0 sampai dengan iterasi sebanyak n - 1
Kapan berhenti ? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan
Prinsip Kerja Bubble Sort
Pengecekan mulai dari data ke - 1 sampai data ke - n
bandingkan data ke - n dengan data sebelumnya ( n - 1 )
Jika lebih kecil maka pindahkan bilangan tersebut dengan bilangan yang ad didepannya ( sebelumnya ) satu persatu ( n-1, n-2, n-3, ...dst )
Jika lebih besar maka tidak terjadi pemindahan
Ulangi langkah 2 dan 3 s/d sort optimal
Bagaimana cara kerja bubble sort ?
Mari kita coba mengurutkan deret array 5 1 4 2 8 , dari angka terendah ke angka terbesar menggunakan bubble sort. Dalam setiap langkah unsur - unsur yang ditulis dalam huruf tebal sedang dibandingkan.
Disini, algoritam membandingkan dua elemen pertama, dan mereka swap.
( 5 1 4 2 8 ) --> ( 1 5 4 2 8 ) 5 > 1 maka posisi di tukar
( 1 5 4 2 8 ) --> ( 1 4 5 2 8 ) 5 > 4 maka posisi di tukar
( 1 4 5 2 8 ) --> ( 1 4 2 5 8 ) 5 > 2 maka posisi di tukar
( 1 4 2 5 8 ) --> ( 1 4 2 5 8 ) 5 < 8 maka algoritma tidak menukar posisi Fase Ke-2 Kini deret sudah tersortir, namun algoritma yang berjalan belum selesai, algoritma masih mengecek deret hingga benar - benar deret tidak ada lagi yang di swap / di tukar. ( 1 2 4 5 8 ) --> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) --> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) --> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) --> ( 1 2 4 5 8 )
Contoh Program Bubble Sort
Contoh 1
void bubble_sort () {
for ( int i=1;i<n;i++){ for ( int j=n-1;j>=i;j--){
if ( data[j]<data[j-1])
tukar (&data[j],&data[j-1]);
//ascending
}
}
}
Keterangan contoh 1
Dengan prosedur diatas, data terurut naik ( ascending ), untuk urut turun ( descending ) silahkan ubah bagian:
if ( data[j]<data[j-1]) tukar (&data[j],&data[j-1]); MENJADI if (data[j]>data[j-1])
tukar (&data[j],&data[j-1]);
Bubble sort paling mudah algoritmanya tetapi paling lambat dibandingkan algoritam lain
Contoh 2
#include
void main ()
{
int i,n,x,j,arr[25];
printf ("Masukkan Banyaknya Array yang ingin di Sort: ");
scanf ("%d",&n);
printf ( "\nMasukkan Array:\n\n");
for (i=0 ; i {
printf (" Array[%d] = ",i);
scanf ("%d",&arr[i]);
}
//proses pengurutan
for (i=0 ; i {
for (j=0 ; jarr[j+1])
{
x=arr[j];
arr[j]=arr[j+1];
arr[j+1]=x;
}
}
}
//lihat hasil sortir
printf ("\nHasil Pensortirannya adalah:\n\n");
{
printf ("%4d\n",arr[i]);
}
}

SUMBER
http://melinda-dwihastuti.blogspot.co.id/2015/02/materi-struktur-data.html

Mengenal Struktur Data Array Pada Bahasa C


A. Pengertian Array
Array merupakan suatu tipe data yang terstruktur untuk menyimpan data dengan satu nama yang sama dan memory yang terurut serta tipe data yang sama. Penggunaan array adalah untuk mengatasi seorang programmer agar tidak menulis ulang kembali  suatu variable yang sama dengan nama yang sama. Sebagai contoh, jika seorang programmer ingin membuat sebuah variable untuk menyimpan nilai dari 10 siswa:
Jika programmer menggunakan deklarasi variable biasa ia akan harus mendeklarasikan 10 data bertipe interger untuk dapat menampung 10 nilai siswa tersebut.
int nilai1
int nilai2;
int nilai3;
int nilai4;
int nilai5;
int nilai6;
int nilai7;
int nilai8;
int nilai9;
int nilai10;

Namun jika programmer tersebut menggunakan struktur data Array maka ia cukup mendeklarasikan 1 kali saja data bertipe interger untuk menampung 10 nilai - nilai siswa.
int  nilai[10];

B. Deklarasi Array
<tipe data> <nama variable> [jumlah element pada Array]
Contoh :           int nilai[10]       ----->  menampung 10 variable bertipe interger dengan nama nilai
                           char nama[15] -----> menampung 14 karakter huruf pada satu variable, deklarasi  variable seperti ini untuk mengimpan atau menginputkan suatu string
Untuk pendeklarasian Array dengan nilai interger yang sudah diketahui sebagai berikut:
NAMA NILAI
Ani 70
Budi 76
Reza 87
Bagus 65

int nilai[4];
nilai[0]=70; -----> menyimpan nilai dari Ani
nilai[1]=76; -----> menyimpan nilai dari Budi
nilai[2]=87; -----> menyimpan nilai dari Reza
nilai[3]=65; -----> menyimpan nilai dari Bagus
Data tersebut akan tersimpan pada sebuah Array dengan index yang sudah di tentukan
70 76 87 65


C. Contoh Program Array
Untuk memperjelas dan memperdalam penjelasan mengenai Array berikut program – program sederhana Array yang mudah untuk di pelajari.
Contoh program Array untuk menginputkan 5 nilai dan menampilkannya kembali di layar:
#include<stdio.h>
int main()
{
            int a;
            int b[5];
            for(a=0;a<5;a++)
            {
                        printf("Masukan Angka ke %d = ",a+1); // untuk menginput data sebanyak 5 x//
                        scanf("%d",&b[a]);
            }
            for(a=0;a<5;a++)   // Untuk menampilkan data sebanyak 5x//
            {
                        printf("Menampilakan bilangan ke %d = %d \n",a+1,b[a]);
            }
            return 0;
}


Program untuk membalikan sebuah char pada suatu kata:

#include<stdio.h>
int main()
{
            int a;
            char b[5];
            b[0] = 'H';                                // pemeberian nama dari komponen2 variabel
            b[1] = 'A';
            b[2] = 'L';
            b[3] = 'L';
            b[4] = 'O';
            for(a=0;a<5;a++)
            {
                        printf("%c",b[a]);         //Menampilkan berurutan
            }
            printf("\n");
            for(a=4;a>=0;a--)                    // Menggunakan a=4 karena perhitungan dari 0,1,2,3,4
            {                                                                               
                        printf("%c",b[a]);         //Menampilkan terbalik
            }
            return 0;
}

SUMER 

http://jagocoding.com/blog/477/Mengenal_Struktur_Data_Array_Pada_Bahasa_C