Cari Blog Ini

Senin, 10 Juni 2019

Algoritma Bubble sort & Quick Sort c++

ALGORTIMA BUBBLE SORT & QUICK SORT 



A.       Pengertian Bubble sort
1.         Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Metode Buble Sort merupakan metode yang paling simpelMetode Buble Sort mudah dipahami algoritmanyaKelemahan Bubble Sort. Meskipun simpel metode Bubble sort  merupakan metode pengurutanyang paling tidak efisien.  Kelemahan buble sort adalah pada saat mengurutkan data yang sangat besar akan mengalami kelambatan luar biasa, atau dengan kata lain kinerja memburuk cukup signifikan ketika data yang diolah jika  data cukup banyak. Kelemahan lain adalah jumlah pengulangan akan tetap sama jumlahnya walaupun data sesungguhnya sudah cukup terurut. Hal ini disebabkan setiap data dibandingkan dengan setiap data yang lain untuk menentukan posisinya.
2.         Algoritma Bubble Sort
Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z).Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.
3.         Contoh Kasus Bubble Sort
Misalkan kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini (ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang terjadi:
a.       Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)
b.      Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)
c.       Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)
d.      Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) -> proses selesai
B.     Pengertian Quick Sort
Quick Sort merupakan suatu algoritma pengurutan data yang menggunakan teknik pemecahan data menjadi partisi-partisi, sehingga metode ini disebut juga dengan nama partition exchange sort. Untuk memulai irterasi pengurutan, pertama-tama sebuah elemen dipilih dari data,  kemudian elemen-elemen data akan diurutkan diatur sedemikian rupa.
Algoritma ini mengambil salah satu elemen secara acak (biasanya dari tengah) yang disebut dengan pivot lalu menyimpan semua elemen yang lebih kecil di sebelah kiri pivot dan semua elemen yang lebih besar di sebelah kanan pivot. Hal ini dilakukan secara rekursif terhadap elemen di sebelah kiri dan kanannya sampai semua elemen sudah terurut.
1.   Keunggulan Quick sort:
Secara umum memiliki kompleksitas O(n log n), Algoritmanya sederhana dan mudah diterapkan pada berbagai bahasa pemrograman dan arsitektur mesin secara efisien.
Dalam prakteknya adalah yang tercepat dari berbagai algoritma pengurutan dengan perbandingan, seperti mergesort dan heapsort.
2.   Kelemahan Quick sort
Sedikit kesalahan dalam penulisan program membuatnya bekerja tidak beraturan (hasilnya tidak benar atau tidak pernah selesai). Memiliki ketergantungan terhadap data yang dimasukkan, yang dalam kasus terburuk memiliki kompleksitas O(n2). Secara umum bersifat tidak stable, yaitu mengubah urutan input dalam hasil akhirnya (dalam hal inputnya bernilai sama).
3.   Contoh kasus Quick sort
Data = 9 4 2 7  10 1 5
a.       langkah pertama adalah tentukan pivotnya. dalam hal ini adalah saya memilih angka 7.
L1 : 9 4 2 7  10 1 5
b.      kemudian buatpartisi buat masing2 angka sebelah kanan dan kiri
L2 : 9 4 2 7 10 1 5
c.       kemudian gunakan algoritma quicksort yang ada diatas. jika angka lebih kecil dari pivot maka akan diletakan sebelah kiri dan jika lebih besar maka letakan disebelah kanan. langkah pertama adalah bandingkan angka 9 dengan pivot apakah lebih kecil atau lebih besar
L3 : 9   4  2  7  10  1  5

d.       karena angka 9 lebih besar maka letakan angka 9 setelah pivot.
L4 : 7  4  2    9   10   1  5
e.       lanjut ke angka 4. bandingkan angka 4 dengan pivot.
L5 :  7  4  2  9   10  1  5 
f.        lanjut ke angka 2. cek apakah angka 2 lebih kecil atau lebih besar dari pivot.
Data : 7   4   2   9    10     1     5

C.    Contoh pemrogramaan Quick sort C++

Hasil running :
D.    Contoh Program bubble sort C++

Hasil running:



note : untuk Program C++ nya, nanti saya update lagi.
Terimakasih

Daftar Pustaka
http://www.faqih.org/algoritma-bubble-sort-quick-sort/
http://onophp.blogspot.com/2018/11/quick-sort-pengertian-agoritma-dan.html

Ridho Ramadhan
1801301095
2c

POHON & GRAPH C++


POHON & GRAPH C++

A. Pengertian Pohon Algoritma
Pohon adalah graf tak berarah terhubung yang tidak mengandung sirkuit.Hutan(forest) adalah kumpulan  pohon yang saling lepas, atau graf tidak terhubung yang tidak mengandung sirkuit. Setiap komponen di dalam graf terhubung tersebut adalah pohon.
     Teorema. Misalkan G = (V, E) adalah graf tak-berarah sederhana dan jumlah simpulnya n. Maka, semua pernyataan di bawah ini adalah ekivalen:
1.  G adalah pohon.
2.  Setiap pasang simpul di dalam G terhubung dengan lintasan tunggal.
3.  G terhubung dan memiliki m = n – 1 buah sisi.
4.  G tidak mengandung sirkuit dan memiliki m = n – 1  buah sisi.
5.  G tidak mengandung sirkuit dan penambahan satu sisi pada graf akan membuat hanya satu sirkuit.
6.  G terhubung dan semua sisinya adalah jembatan.
      Teorema di atas dapat dikatakan sebagai definisi lain dari pohon.
Algoritma Kruskal  ( Langkah 0: sisi-sisi dari graf sudah diurut menaik berdasarkan bobotnya – dari bobot kecil ke bobot besar)
Algoritma Kruskal
Langkah 1:  T masih kosong 
Langkah 2: pilih sisi (u, v) dengan bobot minimum yang tidak membentuk  sirkuit di T. Tambahkan (u, v) ke dalam T.
Langkah 3:   ulangi langkah 2 sebanyak n – 1 kali.
Procedure Kruskal(input G : graf, output T : pohon) { Membentuk pohon merentang minimum T dari graf terhubung – berbobot G.  Masukan: graf-berbobot terhubung G = (V, E), dengan  V  = n Keluaran: pohon rentang minimum T = (V, E’)  } Deklarasi   i, p, q, u, v : integer
Algoritma   ( Asumsi: sisi-sisi dari graf sudah diurut menaik       berdasarkan bobotnya – dari bobot kecil ke bobot       besar)   T  {}    while jumlah sisi T < n-1 do     Pilih sisi (u,v) dari E yang bobotnya terkecil     if (u,v) tidak membentuk siklus di T then        T  T  {(u,v)}    

B.     Pengertian Graph algoritma
Graph digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut.
Gambar berikut ini sebuah graph yang menyatakan peta jaringan jalan raya yang menghubungkan sejumlah kota di Provinsi Jawa Tengah.
 
Graph G = (V, E), yang dalam hal ini:
     V  = himpunan tidak-kosong dari simpul-simpul
             (vertices)
          = { v1 , v2 , ... , vn }
     E  = himpunan sisi  (edges) yang 
            menghubungkan sepasang simpul
         = {e1 , e2 , ... , en }

G1 adalah graph dengan
V = { 1, 2, 3, 4 }
E = { (1, 2), (1, 3), (2, 3),
         (2, 4), (3, 4)} 

C. Contoh program pohon atau kruskal
 
Hasil running : 

D. Contoh program djikstral (graph)


 
 
 



Hasil running :
 
Daftar pustaka :
https://gapuriberbagi.wordpress.com/program-c-stack-queue-searching-sorting-pohon-dan-graph/ 


Ridho Ramadhan
1801301095
2C