Mata kuliah Struktur Data merupakan salah satu mata kuliah yang ajarkan pada banyak program studi ilmu komputer. Mata kuliah ini mempelajari struktur data dan algoritma diantaranya array, linked list, stack, queue, table hash, heap, metode pengurutan, metode pencarian, binary tree dan banyak lagi. Salah satu cara termudah memahami materi matakuliah ini adalah dengan cara memvisualisasikan materinya secara langsung, misalnya algoritma pengurutan. Tanpa visualisasi, algoritma pengurutan yang dipelajari harus dibayangkan oleh masing-masing orang.
Pengurutan data dalam struktur data sangat penting untuk data yang beripe data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun)
Berikut metode pengurutan data :
Berikut metode pengurutan data :
- Bubble sort
- Shell sort
- Insertion sort
- Quick sort
- Radix sort
Bubble Sort
• Diberi nama "Bubble" karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda.
• Bubble Sort mengurutkan data dengan cara
membandingkan elemen sekarang dengan elemen berikutnya. Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.
Perhatikan bahwa jumlah pertukaran dan perbandingan data tidaklah tetap, perbedaan tergantung pada keadaan awal data setelah diacak. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode bubble sort.
Pengacakan Jumlah TotalPertukaran DataPerbandingan Data1 1552792 1272723 1372454 1422975 1512946 1382857 1783008 1652729 15628510 175300Rata-rata 152283Jumlah rata-rata pertukaran untuk 10 kali pengacakan adalah 152 kali, sedangkan rata-rata jumlah perbandingan adalah sebanyak 283 kali. Tetapi bila data pada awalnya terurut, maka untuk 25 jumlah data, jumlah pertukaran data sebanyak 0 kali dengan jumlah perbandingan sebanyak 24 kali.
Shell Sort
• Dikembangkan oleh Donald L. Shell (1959)
• Mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu sehingga dibentuk sub-list, kemudian dilakukanZ pertukaran jika diperlukan
Jumlah pertukaran data dengan metode ini tidak selalu tetap namun tergantung pada keadaan awal data. Sedangkan jumlah perbandingan data selalu tetap. Tabel berikut memperlihatkan tabulasi hasil visualisasi menggunakan metode selection sort.
Pengacakan Jumlah TotalPertukaran DataPerbandingan Data1 233252 243253 213254 223255 233256 223257 213258 203259 2332510 22325Rata-rata 22325Terlihat bahwa jumlah pertukaran data turun drastis dibandingkan pengurutan menggunakan metode bubble sort, karena memang metode selection sort diciptakan untuk memperbaiki metode bubble sort mengurangi jumlah perbandingan [4]. Jumlah perbandingan data selalu tetap dan tidak tergantung pada keadaan awal data. Bila data awal dalam keadaan sudah terurut, maka untuk jumlah data yang sama, total pertukaran data sebanyak 0 kali dengan jumlah perbandingan tetap 325 kali.
Metode Insertion Sort
Hasil pengamatan menunjukkan bahwa dengan jumlah data dan jumlah pengacakan yang sama, metode insertion sort bekerja lebih cepat dibandingkan dengan metode bubble sort dan selection sort (untuk mencatat waktu secara lebih tepat, mungkin program perlu dimodifikasi sehingga waktu proses pengurutan dapat dihitung secara tepat). Jumlah pertukaran data dengan metode ini juga tergantung pada keadaan awal data yaitu rata-rata sebanyak 136 kali (dari 10 kali pengamatan), dan jumlah perbandingan data selalu 300 kali. Berikut tabulasi hasil visualisasi menggunakan metode insertion sort.
Pengacakan Jumlah TotalPertukaran DataPerbandingan Data1 1493002 1383003 1683004 1573005 1023006 1063007 1223008 1233009 14530010 148300Rata-rata 136300Berikut contohnya
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
void main ()
{
char nama[20];
char jurusan [20];
cout<<"masukkan nama anda: ";cin.getline(nama,20);
cout<<"masukkan jurusan anda: ";cin.getline(jurusan,20);
cout<<"nama anda: "<<nama<<endl;
cout<<"jurusan anda: "<<jurusan;
getch();
}
Tidak ada komentar:
Posting Komentar
Berikan Opini Anda tentang Topik ini