Monday, January 5, 2015

Sorting

Tugas Pendahuluan
1. Sebutkan dan jelaskan jenis-jenis Sorting pada bahasa C/C++!
2. Sebagai programmer, mengapa anda menggunakan Sorting!
3. Buatlah algoritma dan contoh program sederhana menggunakan Sorting dengan memakai Flowchart!

Jawab
1. Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak atau tidak teratur menjadi urut dan teratur menurut suatu aturan tertentu. Sorting dapat dibedakan menjadi dua jenis yaitu ascending dan descending.
2. Jenis-Jenis Sorting
*Buble Sort
Merupakan algoritma pengurutan paling tua dengan metode pengurutan paling sederhana. Pengurutan yang dilakukan dengan membandingkan masing-masing item dalam suatu list secara berpasangan, menukar item jika diperlukan, dan mengulaginya sampai akhir list secara berurutan, sehingga tidak ada lagi item yang dapat ditukar

*Selection Sort
Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1


*Insert Sort
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang sudah diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.


*Shell Sort
Merupakan algoritma yang stau jenis dengan insertion sort, dimana pada setiap nilai i dalam n/i item diurutkan. Pada setiap pergantian nilai, i dikurangi sampai 1 sebagai nilai terakhir


*Merge Sort

  • Divide : memilah elemen-elemen dari rangkaian data menjadi dua
  • Conquer : Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif
  • Kombinasi : mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan data berurutan
*Quick Sort

  • Divide : Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r] dimana setiap elemen A[p…q-1] adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan.
  • Conquer : Mengurutkan elemen pada sub-rangkaian secara rekursif. Pada algoritma quicksort, langkah ”kombinasi” tidak di lakukan karena telah terjadi pengurutan elemen – elemen pada sub-array
*Heap Sort
Heap sort adalah sorting yang menggunakan struktur data heap, dengan nilai parent selalu lebih besar dari pada nilai childnya.


*Radix Sort
Radix sort merupakan sebuah algoritma pengurutan yang mengatur pengurutan nilai tanpa melakukan beberapa perbandingan pada data yang dimasukkan.

3. Algoritma Sorting
Deklarasi
Integer A[n] = {15,10,7,22,17,5,12}
Integer X, I, K

Deksripsi
for (I=0; I <= n-1; I++)
printf("%3i", A[I]) //Sebelum di Sorting
K=0;
while(K<=n-2)
{
I=0;
while(I<=n-2 - K)
{
if (A[I] > A[I+1])
{
X = A[I];
A[I] = A[I+1];
A[I+1] = X;
}
I++;
}
K++;
}
printf("Sesudah di-sort\n");
for (I=0; I<= n-1; I++)
printf("%3d", A[I]);

Flowchart


Source Code
#include <stdio.h>
#include <iostream>
#include <conio.h>
#define n 7

using namespace std;
main()
{
int A[n] = {15,10,7,22,17,5,12};
int X, I, K;
printf("Sebelum di-sort\n");
for (I=0; I <= n-1; I++)
printf("%3i", A[I]);
printf("\n\n");
K=0;
while(K<=n-2)
{
I=0;
while(I<=n-2 - K)
{
if (A[I] > A[I+1])
{
X = A[I];
A[I] = A[I+1];
A[I+1] = X;
}
I++;
}
K++;
}
printf("Sesudah di-sort\n");
for (I=0; I<= n-1; I++)
printf("%3d", A[I]);
printf("\n\n");
system("PAUSE");
}

Share This Art!


Comments
0 Comments

0 komentar:

Post a Comment