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




Jumat, 11 November 2016

Tugas Uas Jfram Menghitung Luas Kubus

Nama : Zupriyan
Nim  : 161011700412
Reg   : C

Kasusu : Menghitung Luas Bangunan Kubus

Psucodenya 


 Hasil Setelah Di RUN

Psucodenya

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author admin
 */
public class kubus extends javax.swing.JFrame {
     int sisi1,sisi2,hasil;
   

    /**
     * Creates new form kubus
     */
    public kubus() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        masukansisi2 = new javax.swing.JTextField();
        sisi = new javax.swing.JLabel();
        masukansisi = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        hasilnya = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        masukansisi2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                masukansisi2ActionPerformed(evt);
            }
        });

        sisi.setText("MASUKAN SISI");

        masukansisi.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                masukansisiActionPerformed(evt);
            }
        });

        jLabel1.setText("MASUKAN SISI");

        jButton1.setText("Prosses");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("Ulangi");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jLabel2.setText("HASIL");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(34, 34, 34)
                        .addComponent(jButton1))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel2)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(sisi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 88, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(masukansisi2, javax.swing.GroupLayout.DEFAULT_SIZE, 114, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addComponent(jButton2))
                    .addComponent(hasilnya))
                .addGap(95, 95, 95))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap(192, Short.MAX_VALUE)
                    .addComponent(masukansisi, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(94, 94, 94)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(36, 36, 36)
                .addComponent(sisi)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(masukansisi2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(hasilnya, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addGap(24, 24, 24)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton2)
                    .addComponent(jButton1))
                .addContainerGap(127, Short.MAX_VALUE))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(29, 29, 29)
                    .addComponent(masukansisi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(251, Short.MAX_VALUE)))
        );

        pack();
    }// </editor-fold>                       

    private void masukansisi2ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    private void masukansisiActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
    }                                          

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
       sisi1=Integer.parseInt(masukansisi.getText());
       sisi2=Integer.parseInt(masukansisi2.getText());
       hasil=sisi1*sisi2 ;
       hasilnya.setText(""+hasil) ;
    
       
    }                                       

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        masukansisi.setText("");
     masukansisi2.setText("");
     hasilnya.setText("");
    }                                       

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(kubus.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(kubus.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(kubus.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(kubus.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new kubus().setVisible(true);
            }
        });
    }
   
    // Variables declaration - do not modify                    
    private javax.swing.JTextField hasilnya;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JTextField masukansisi;
    private javax.swing.JTextField masukansisi2;
    private javax.swing.JLabel sisi;
    // End of variables declaration                  
}