1. Algoritma Searching

dokumen-dokumen yang mirip
# TEN Sorting PENDAHULUAN

BAB 2 SORTING (PENGURUTAN)

Modul Praktikum Algoritma dan Struktur Data

SORTING (Pengurutan)

Alpro & Strukdat 1 C++ (Sorting) Dwiny Meidelfi, M.Cs

BAB VI Pengurutan (Sorting)

Kompleksitas Algoritma Sorting yang Populer Dipakai

ALGORITMA PENGURUTAN & PENCARIAN

Gambar 13.1 Ilustrasi proses algoritma sorting

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Pencarian (Searching)

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Modul Praktikum 6 Pemograman Berorientasi Objek

A. TUJUAN PEMBELAJARAN

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Bab Tujuan. 6.2 Insertion Sort

Algoritma dan Struktur Data. Searching dan Sorting

STRUKTUR DATA SORTING ARRAY

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

STRATEGI DIVIDE AND CONQUER

Modul 8 SORTING (PENGURUTAN)

MODUL IV PENCARIAN DAN PENGURUTAN

Sorting. Pertemuan ke 14.

Sorting adalah proses mengatur sekumpulan objek menurut aturan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending = dari data kecil

BAB V SORT. Proses penukaran tidak dapat langsung dilakukan dengan cara : nilai[1] = nilai[2]; nilai[2] = nilai[1];

7. SORTING DAN SEARCHING

STRUKTUR DATA (3) sorting array. M.Cs

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Algoritma Bubble Sort dan Quick Sort

BAB 8 SORTING DAN SEARCHING

Pengurutan (Sorting) Algoritma Pemrograman

BAB VII ALGORITMA DIVIDE AND CONQUER

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

Politeknik Elektronika Negeri Surabaya

Decrease and Conquer

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Array Dimensi Satu. Pendahuluan. Slamet Kurniawan, S.Kom

Algoritme dan Pemrograman

BAB VI SEARCHING (PENCARIAN)

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

Algoritma dan Pemrograman 2 PENGURUTAN

A. TUJUAN PEMBELAJARAN

PENGURUTAN (SORTING) 1. Overview

Algoritma Sorting. Ahmad Kamsyakawuni, S.Si, M.Kom. Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Jember

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

Praktikum 8. Pengurutan (Sorting) Bubble Sort, Shell Sort

BAB VIII Pencarian(Searching)

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Pengertian Algoritma Pengurutan

SORTING (PENGURUTAN DATA)

12/26/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Sorting. Data untuk sorting. Contoh. Algoritme #1: BUBBLE SORT.

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

SORTING. Brigida Arie Minartiningtyas, M.Kom

Prpsedur progaram selectioa sort (Dengan program C++)

Algoritme dan Pemrograman

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-9 Pengurutan (Sorting) 2

Kompleksitas Algoritma

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

Kompleksitas Algoritma (1)

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

Struktur Data dan Algoritma

STRUKTUR DATA MENGGUNAKAN C++ Windha Mega PD, S.Kom

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Politeknik Elektronika Negeri Surabaya

Powered by icomit.wordpress.com

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

Bab 8 Array. x=a[9]; Untuk memasukkan data ke dalam array, sintak yang digunakan adalah : a[nomor_elemen] = data;

Praktikum 9. Pengurutan (Sorting) Quick Sort, Merge Sort

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 12 & 13

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

Pengurutan (Sorting)

Sorting (Bubble Sort)

Politeknik Elektronika Negeri Surabaya

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

Sorting Algorithms. Divide and Conquer

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Kompleksitas Algoritma

ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

Algoritma dan Struktur Data

SORTING (BAGIAN II) Proses kelima

Struktur Data Linier. Input. Program untuk menyelesaikan masalah. Algoritma Penyelesaian. Proses. Masalah. Struktur Data. Output

Transkripsi:

Nama : Suseno Rudiansyah Kelas : X2T Fakultas : Teknik Informatika Tugas : Algoritma 2 1. Algoritma Searching Pengertian Algoritma Searching Searching merupakan proses dasar dalam pengolahan data. Yaitu untuk menemukan nilai tertentu dalam sekumpulan data yang bertipe sama. Algoritma searching dijelaskan secara luas sebagai algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut. Algoritma searching menerima sebuah argument kunci dan dengan langkah-langkah tertentu akan mencari rekaman dengan kunci tersebut. Setelah melakukan proses pencarian, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan atau tidak ditemukan. Macam-macam Algoritma Searching 1. Pencarian Beruntun (Sequential Search) Konsep - Membandingkan setiap elemen larik satu per satu secara urut (beruntun), mulai dari elemen pertama sampai dengan elemen yang terakhir sampai data ditemukan atau tidak ditemukan. - Proses pencarian akan dihentikan jika data yang dicari sudah ditemukan. - Merupakan metode yang paling sederhana - Kelemahan pada kasus ini adalah, untuk N elemen data harus dilakukan pencarian sebanyak N kali pula. Algoritma Algoritma pencarian beruntun dapat dituliskan sebagai berikut: (1) i 0 (2) ketemu false (3) selama (tidak ketemu) dan (i <= N) kerjakan baris 4 (4) jika (Data*i+ = x) maka ketemu true, jika tidak i i + 1 (5) jika (ketemu) maka i adalah indeks dari data yang dicari, jika data tidak ditemukan. Contoh #include <stdio.h> #include <conio.h> void main() int data[8] = 8,10,6,-2,11,7,1,100; int cari; int flag=0; printf( masukkan data yang ingin dicari = );scanf( %d,&cari); for(int i=0;i<8;i++) if(data[i] == cari) flag=1;

if(flag==1) printf( Data ada!\n ); else printf( Data tidak ada!\n ); getch(); return 1; Dari program di atas, terlihat bahwa dilakukan perulangan untuk mengakses semua elemen array data satu per satu berdasarkan indeksnya. a. Program menggunakan sebuah variable flag yang berguna untuk menandai ada atau tidaknya data yang dicari dalam array data. Hanya bernilai 1 atau 0. b. Flag pertama kali diinisialisasi dengan nilai 0. c. Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan tetap bernilai 0. d. Semua elemen array data akan dibandingkan satu per satu dengan data yang dicari dan diinputkan oleh user. 2. Pencarian Beruntun dengan sentinel Konsep - Pencarian bertujuan untuk menambahkan elemen baru setelah elemen terakhir larik, maka terdapat sebuah varian dari metode pencarian berurutan. NIlai x yang akan dicari sengaja ditambahkan terlebih dahulu. Data yang ditambahkan setelah elemen larik ini disebut dengan sentinel. - Perhatikan array berikut ini: 0 1 2 3 4 5 6 indeks 3 12 9-4 21 6 ffea ffeb ffec ffed ffef fffa fffb alamat - Terdapat enam buah data dalam array (dari indeks 0 s.d. lima dan terdapat 1 indeks array tambahan (indeks ke 6) yang belum berisi data (disebut sentinel) - Array pada indeks ke-6 berguna untuk menjaga agar indeks data berada pada indeks 0 s.d. 5 saja. Nila pencarian data sudah mencapai array indeks yang ke-6 maka berarti data TIDAK ADA, sedangkan jika pencarian tidak mencapai indeks ke-6, maka data ADA. Algoritma Procedure SeqSearchWithSentinel(input L: LarikInt, input n: integer, input x: integer, output idx: integer) DEKLARASI I: integer ALGORITMA L[n+1] X sentinel I 1 While (L*i+ x) do I i+1 Endwhile If idx = n+1 then idx -1 else idx 1 endif

Contoh #include <stdio.h> #include <conio.h> void main() int data[7] = 3,12,9,-4,21,6; int cari,i; printf( masukkan data yang ingin dicari = );scanf( %d,&cari); data[6] = cari; i=0; while(data[i]!= cari) i++; if(i<6) printf( Data ada!\n ); else printf( Data tidak ada!\n ); getch; return 1; 3. Pencarian Bagi Dua (Binary Search) Konsep - Merupakan metode pencarian pada data terurut yang paling efisien. - Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. - Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode ini. data yang disimpan didalam larik harus sudah terurut. Algoritma Algoritma pencarian biner dapat dituliskan sebagai berikut: - L 0 - R N 1 - Ketemu false - Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8 - m (L + R) / 283 - jika (Data*m+) maka ketemu true - jika (x < Data*m+) maka R m 1 - jika (x > Data*m+) maka L m + 1 - jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak maka data tidak ditemukan. Contoh int binary_search(int cari) int l,r,m; l = 0; r = n-1; int ktm = 0; while(l<=r && ktm==0) m = (l+r)/2; if(data[m] == cari) ktm=1; else if (cari < data[m]) r=m-1; else l=m+1; if(ktm==1) return 1; else return 0;

2. Algoritma Searching Sequence Dengan Sentinel kali ini saya ingin berbagi dengan anda sebuah coding menggunakan bahasa pemrograman C++ tentang algoritma searching sequence dengan sentinel. algoritma searching sequence ini merupakan tugas mata kuliah saya waktu kuliah. hehe :D untuk meringan beban anda atau pun untuk menjadikan referensi anda mengenai algoritma searching sequence. monggo silahkan disimak :) berikut codingnya : #include <stdio.h> #include <conio.h> main () int i, n, dt; int Posisi, Ketemu; int Arr[6]; //Aplikasi di mulai printf( Inputkan banyaknya data : ); scanf ( %i, &n); //input Array for (i=0; i<n; i++) printf( masukan data ke %i :, i + 1); scanf( %i, &Arr*i+); //proses pencarian printf( \nmasukan data yang dicari : ); scanf( %i, &dt); Ketemu =0; i = 0; while (Ketemu == 0 && i< n) if (Arr[i] == dt) Ketemu = 1; Posisi = i; else i = i + 1; if (Ketemu ==0) printf( data tidak di temukan \n ); else printf( data di temukan pada posisi %i \n, Posisi + 1);

getch(); Hasil : 3. Algoritma Binary Searching Pengertian Terdapat metode pencarian pada data terurut yang paling efficient, yaitu metode pencarian bagidua atau pencarian biner (binary search). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode ini. Data yang disimpan di dalam larik harus sudah terurut. BST adalah binary tree yang mana data di dalamnya tersusun sedemikian rupa sehingga pada setiap subtree di dalamnya berlaku: setiap data di subtree kiri < data root subtree < setiap data di subtree kanan. Algoritma class BinaryNode void printinorder( ) if( left!= null ) left.printinorder( ); System.out.println( element ); if( right!= null ) right.printinorder( ); class BinaryTree public void printinorder( ) if( root!= null ) root.printinorder( ); // Left // Node // Right

Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : 1. Mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2. 2. Kemudian data yang dicari dibandingkan dengan data tengah. 3. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah 1. 4. Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1. 5. Demikian seterusnya sampai data tengah sama dengan yang dicari. Algoritma pencarian biner dapat dituliskan sebagai berikut : Contoh 1. L 0 2. R N 1 3. ketemu false 4. Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8 5. m (L + R) / 2 83 6. Jika (Data[m] = x) maka ketemu true 7. Jika (x < Data[m]) maka R m 1 Jika (x > Data[m]) maka L m + 1 8. Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan. int binary_search(int cari) int l,r,m; l = 0; r = n-1; int ktm = 0; while(l<=r && ktm==0) m = (l+r)/2; if(data[m] == cari) ktm=1; else if (cari < data[m]) r=m-1; else l=m+1; if(ktm==1) return 1; else return 0; 4. Algoritma Shorting ada beberapa Algoritma Sorting, yaitu : 1. Insertion Sort Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Ide dari algoritma ini dapat dianalogikan seperti mengurutkan kartu. Penjelasan berikut ini menerangkan bagaimana algoritma insertion sort bekerja dalam pengurutan kartu.

Anggaplah anda ingin mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar. Seluruh kartu diletakkan pada meja,sebutlah meja ini sebagai meja pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian kita mempunyai meja yang lain,meja kedua, dimana kartu yang diurutkan akan diletakkan. Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama dan letakkan pada meja kedua. Ambil kartu kedua dari meja pertama, bandingkan dengan kartu yang berada pada meja kedua, kemudian letakkan pada urutan yang sesuai setelah perbandingan. Proses tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah diletakkan berurutan pada meja kedua. Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (mejakedua). 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. Cara kerja insertion sort sebagaimana namanya.pertama-tama, dilakukan iterasi, dimana di setiap iterasi insertion sort memindahkan nilai elemen,kemudian menyisipkannya berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan. Dariproses iterasi, seperti biasa, terbentuklah bagian yang telah di-sorting dan bagian yang belum disorting. Algoritma Insertion Sort Algoritma Insertion Sort dapat dirangkum sebagai berikut 1. Simpan nilai Ti kedalam variabel sementara, dengan i = 1. 2. Bandingkan nilainya dengan elemen sebelumnya.\jika elemen sebelumnya (Ti-1) lebih besar nilainya daripada Ti, maka tindih nilai Ti dengan nilai Ti-1 tersebut. Decrement i (kurangi nilainya dengan 1). 3. Lakukan terus poin ke-tiga, sampai Ti-1 Ti.

4. Jika Ti-1 Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan sebelumnya. 5. Ulangi langkah dari poin 1 di atas dengan i di-increment (ditambah satu). 2. Bubble short Bubble Sort merupakan cara pengurutan yangsederhana. Konsep dari ide dasarnya adalah seperti gelembung air untuk elemen struktur data yangsemestinya berada pada posisi awal. Cara kerjanyaadalah dengan berulang-ulang melakukan traversal (proses looping) terhadap elemen-elemen struktur datayang belum diurutkan. Di dalam traversal tersebut,nilai dari dua elemen struktur data dibandingkan. Jikaternyata urutannya tidak sesuai dengan pesanan,maka dilakukan pertukaran (swap). Algoritma sortingini disebut juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen untuk mengoperasikan elemennya. Algoritma Bubble Sort Algoritma bubble sort dapat diringkas sebagaiberikut, jika N adalah panjang elemen struktur data, dengan elemen-elemennya adalah T1, T2, T3,, TN-1,TN, maka: 1. Lakukan traversal untuk membandingkan dua elemen berdekatan. Traversal ini dilakukan dari belakang. 2. Jika elemen pada TN-1 > TN, maka lakukan pertukaran (swap). Jika tidak, lanjutkan ke proses traversal berikutnya sampai bertemu dengan bagian struktur data yang telah diurutkan. 3. Ulangi langkah di atas untuk struktur data yang tersisa. 3. Selection Sort Jika anda diminta untuk membuat algoritma sorting tersendiri, anda mungkin akan menemukan sebuah algoritma yang mirip dengan selection sort. Layaknya insertion sort, algoritma ini sangat rapat dan mudah untuk diimplementasikan. Mari kita kembali menelusuri bagaimana algoritma ini berfungsi terhadap satu paket kartu. Asumsikan bahwa kartu tersebut akan diurutkan secara ascending. Pada awalnya, kartu tersebut akan disusun

secara linier pada sebuah meja dari kiri ke kanan, dan dari atas ke bawah. Pilih nilai kartu yang paling rendah, kemudian tukarkan posisi kartu ini dengan kartu yang terletak pada pojok kiri atas meja. Lalu cari kartu dengan nilai paling rendah diantara sisa kartu yang tersedia. Tukarkan kartu yang baru saja terpilih dengan kartu pada posisi kedua. Ulangi langkah langkah tersebut hingga posisi kedua sebelum posisi terakhir dibandingkan dan dapat digeser dengan kartu yang bernilai lebih rendah.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 Algoritma sorting sederhana yang lain adalahselection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemenelemenyang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar. Algoritma Selection Sort Algoritma selection sort dapat dirangkum sebagaiberikut: 1. Temukan nilai yang paling minimum (atau sesuaikeinginan) di dalam struktur data. Jika ascending, maka yang harus ditemukan adalah nilai yang paling minimum. Jika descending, maka temukan nilai yang paling maksimum. 2. Tukar nilai tersebut dengan nilai pada posisipertama di bagian struktur data yang belum diurutkan. Ulangi langkah di atas untuk bagian struktur data yang tersisa 4. Merge Sort Sebelum mendalami algoritma merge sort, mari kita mengetahui garis besar dari konsep divide and conquer karena merge sort mengadaptasi pola tersebut. Pola Divide and Conquer Beberapa algoritma mengimplementasikan konsep rekursi untuk menyelesaikan permasalahan. Permasalahan utama kemudian dipecah menjadi sub-masalah, kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan utama.

Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah. - Divide Memilah masalah menjadi sub masalah - Conquer Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan lebih efektif - Kombinasi Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju penyelesaian atas permasalahan utama Algoritma Merge Sort ditemukan oleh John vonneumann di tahun 1945. Merge Sort termasuk paradigma algoritma divide and conquer (kurang lebih berarti: bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelum kemudian dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai berikut, 1. Sebuah list yang kecil membutuhkan langkah yang lebih sedikit untuk pengurutan daripada sebuah list yang besar. 2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan langkah yangl ebih sedikit daripada membentuk sebuah list terurut dari dua buah list tak terurut. Contoh:hanya diperlukan satu kali traversal untuk masing-masing list jika keduanya sudahterurut. \ Algoritma Merge Sort Algoritma Merge Sort sederhananya, dapat ditulis berikut: 1. Bagi list yang tak terurut menjadi dua sama panjang atau salah satunya lebih panjang satu elemen. 2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan ukuran 1. 3. Gabung 2 sublist kembali menjadi satu list terurut.

5. Quicksort Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge sort, algoritma ini juga berdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma ini hanya mengikuti langkah langkah sebagai berikut : Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R. Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur komputer saintifik kecil, Elliott Brothers. Algoritma ini rekursif, dan termasuk paradigma algoritma divide and conquer. Algoritma Quick Sort Algoritma ini terdiri dari 4 langkah utama: 1. Jika struktur data terdiri dari 1 atau 0 elemen yang harus diurutkan, kembalikan struktur data itu apa adanya. 2. Ambil sebuah elemen yang akan digunakansebagai pivot point (poin poros). (Biasanya elemen yang paling kiri.) 3. Bagi struktur data menjadi dua bagian satu dengan elemen-elemen yang lebih besar daripada pivot point, dan yang lainnya dengan elemen-elemen yang lebih kecil dari pada pivot point. 4. Ulangi algoritma secara rekursif terhadap kedua paruh struktur data. Contoh Program sorting pada C++ contoh program sort c++ : #include <iostream.h> #include <conio.h> int data[100],data2[100]; int n; void tukar(int a,int b)

int t; t = data[b]; data[b] = data[a]; data[a] = t; 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(j,j-1); cout<< bubble sort selesai! <<endl; void exchange_sort() for (int i=0; i<n-1; i++) for(int j = (i+1); j<n; j++) if (data [i] > data[j]) tukar(i,j); cout<< exchange sort selesai! <<endl; void selection_sort() int pos,i,j; for(i=0;i<n-1;i++) pos = i; for(j = i+1;j<n;j++) if(data[j] < data[pos]) pos = j; if(pos!= i) tukar(pos,i); cout<< selection sort selesai! <<endl;

void insertion_sort() int temp,i,j; for(i=1;i<n;i++) temp = data[i]; j = i -1; while(data[j]>temp && j>=0) data[j+1] = data[j]; j ; data[j+1] = temp; cout<< insertion sort selesai! <<endl; void QuickSort(int L, int R) //the best sort i ve ever had int i, j; int mid; i = L; j = R; mid = data[(l+r) / 2]; do while (data[i] < mid) i++; while (data[j] > mid) j ; if (i <= j) tukar(i,j); i++; j ; ; while (i < j); if (L < j) QuickSort(L, j); if (i < R) QuickSort(i, R); void Input()

cout<< Masukkan jumlah data = ; cin>>n; for(int i=0;i<n;i++) cout<< Masukkan data ke- <<(i+1)<< = ; cin>>data*i+; data2[i] = data[i]; void Tampil() cout<< Data : <<endl; for(int i=0;i<n;i++) cout<<data*i+<< ; cout<<endl; void AcakLagi() for(int i=0;i<n;i++) data[i] = data2[i]; cout<< Data sudah teracak! <<endl; void main() int pil; clrscr(); do clrscr(); cout<< Program Sorting Komplit!!! <<endl; cout<< ********************************************* <<endl; cout<< 1. Input Data <<endl; cout<< 2. Bubble Sort <<endl; cout<< 3. Exchange Sort <<endl; cout<< 4. Selection Sort <<endl; cout<< 5. Insertion Sort <<endl; cout<< 6. Quick Sort <<endl; cout<< 7. Tampilkan Data <<endl; cout<< 8. Acak Data <<endl; cout<< 9. Exit <<endl;

cout<< Pilihan Anda = ; cin>>pil; switch(pil) case 1:Input(); break; case 2:bubble_sort(); break; case 3:exchange_sort(); break; case 4:selection_sort(); break; case 5:insertion_sort(); break; case 6:QuickSort(0,n-1); cout<< quick sort selesai! <<endl; break; case 7:Tampil(); break; case 8:AcakLagi(); break; getch(); while(pil!=9); 5. Stuktur Data Bentukan Tipe data bentukan adalah tipe data yang dibuat sendiri sesuai kebutuhan dalam program yang akan kita buat (disebut juga user defined types). Adapun yang termasuk ke dalam tipe bentukan adalah : Sruktur Struktur adalah tipe data bentukan yang menyimpan lebih dari satu variabel bertipe sama maupun berbeda. Untuk mumbuat tipe data struktur dalam C, menggunakan kata kunci struct. Bentuk umum pendeklarasian tipe: Struct nama struktur Tipe_data variabel1; Tipe_data variabel2;...