Minggu, 29 Januari 2012

jawaban soal uas logika dan algoritma




11.       Algoritma untuk menentukan bilangan ganjil atau genap
1. Masukkan sebuah bilangan/Input bilangan sembarang
2. Bagi bilangan tersebut dengan angka 2
3. Prosesnya, Hitung sisa bagi pada langkah kedua

4. Bila sisa bagi sama dengan nol, maka bilangan itu adalah bilangan genap, tetapi bila sisa bagi sama dengan 1 maka bilangan itu adalah bilangan ganjil.
 
12.A.  Sorting
B.      SEARCHING 
C.      Knapsack

a.       Pengurutan atau Sorting merupakan suatu proses mengatur susunan data-data menurut syarat      tertentu. Meskipun pengurutan ini sepertinya hanya sebuah masalah klasik dalam keinformatikaan,namun perannya tidak dapat dipisahkan terutama dalam pengolahan data. Suatu pengolahan data biasanya akan lebih efisien jika datanya telah terurut,seperti Binary Search misalnya. Mengingat pentingnya pengurutan dalam penggunaannya dalam hal keinnformatikaan, maka perlu diketahui algoritma mana yang sebenarnya paling efisien untuk dipakai. Meskipun suatu algoritma pengurutan mempunyai kelebihan dan keterbatasan masing-masing, kompleksitas dan keefisiensiannya tetap harusdipertimbangkan.

b.      CONTOH APLIKASI TEKNIK PEMECAHAN MASALAH (SEARCHING) memecahkan  permainan FREECELL DENGAN ALGORITMA BACKTRACKING FreeCell merupakan sebuah permainan puzzle kartu yang sangat terkenal. Permainan inimerupakan permainan yang dikembangkan dari permainan terdahulunya seperti Klondike dan Eight Off. Permainan FreeCell merupakan permainan yang lebih mengandalkan kemampuan dan strategi daripada keberuntungan. Permainan ini berkembang dengan sangat pesat sehingga Windows mengimplementasikannya dalam entertainment packnya sehingga semua komputer yang memiliki OS Windows (kecuali Windows Vista) biasanya memiliki permainan FreeCell. Selain itu terdapat juga website website yang menyediakan permainan FreeCell dengan fasilitas fasilitas seperti turnamen antar pemain dan sebagainya.
Algoritma backtracking (runut balik) merupakan algoritma yang sangat terkenal dan banyak digunakan dalam memecahkan berbagai jenis permainan. Algoritma ini merupakan algortima yang berdasarkan pada DFS (Deep First Search) untuk mencari solusi suatu masalah.
I.       Rule Freecell
  1. Kocok kartu (joker tidak diikutsertakan). Kemudian bagi kartu tersebut ke dalam 8 kolom (terletak di bawah pada gambar 1). Akan terdapat 4 buah kolom yang memiliki 7 buah kartu dan 4 buah kololm yang memiliki 6 buah kartu. Pada setiap kolom, kartu kedua diletakkan di bawah kartu pertama, kartu ketiga di bawah kartu kedua, dan seterusnya. Peletakkan kartu di bawah kartu yang lainnya hanya bermaksud bahwa hanya kartu terbawah yang boleh diambil. Apabila kita memainkan permainan ini dari program yang telah disediakan Windows, maka langkah ini tidak perlu dilakukan karena telah ditangani oleh program. Selain itu akan terdapat 4 buah kotak kosong (free cells) di kiri atas dan 4 buah tumpukan fondasi di kanan atas.
   2. Objektif atau tujuan dari permainan ini adalah memindahkan semua kartu ke tumpukan fondasi.
   3. Setiap kartu yang tunggal bisa dipindahkan apabila memenuhi kriteria berikut:
a. Dari kolom yang satu ke kolom yang lain yang tidak kosong, apabila  kolom yang dituju     memiliki kartu terakhir memiliki indeks yang lebih rendah dengan perbedaan 1 dan berbeda warna. Indeks tertinggi adalah King dan indeks terendah adalah As. Urutan indeks sama dengan urutan yang digunakan dalam permainan kartu pada umumnya. Setiap kartu yang dipindahkan akan ditempatkan ke bawah kartu terkahir dari kolom yang dituju
b. Dari kolom ke kolom lain yang masih kosong.
c. Dari kolom ke free cell, apabila kotak free cell yang dituju masih  kosong.
d. Dari free cell ke kolom yang masih kosong.
e. Dari free cell ke kolom yang tidak kosong, memiliki syarat yang sama dengan  pemindahan kartu dari kolom ke kolom lain yang tidak kosong.
f. Dari kolom ke tumpukan fondasi yang masih kosong, apabila kartu yang dipindahkan adalah As.
g. Dari kolom ke tumpukan fondasi yang telah terisi, apabila kartu yang dipindahkan memiliki lambang yang sama dengan kartu terakhir tumpukan fondasi dan indeksnya lebih tinggi dengan perbedaan satu
h. Dari free cell ke tumpukan fondasi yang masih kosong, apabila kartu yang dipindahkan adalah As.
i. Dari free cell ke tumpukan fondasi yang tidak kosong, dengan syarat yang sama        dengan pemindahkan kartu dari kolom ke tumpukan fondasi yang tidak kosong.

c.       Dalam kehidupan sehari-hari, kita sering dipusingkan dengan media penyimpanan yang terbatas padahal kita diharuskan menyimpan beberapa objek kedalam media tersebut.
Bagaimana kita mengatur objek apa saja yang dipilih dan seberapa besar objek tersebut disimpan?
Dari permasalahan tersebut, munculah suatu permasalahan yang dikenal dengan “Permasalahan Knapsack” atau lebih dikenal dengan “Knapsack Problem”. Masalah Knapsack merupakan suatu permasalahan bagaimana memilih objek dari sekian banyak dan berapa besar objek tersebut akan disimpan sehingga diperoleh suatu penyimpanan yang optimal dengan memperhatikan objek yang terdiri dari n objek (1,2,3,…) dimana setiap objek memiliki bobot (Wi) dan profit (Pi) dengan memperhatikan juga kapasitas dari media penyimpanan sebesar M dan nilai probabilitas dari setiap objek (Xi).
Permasalahan ini dapat diselesaikan dengan 3 cara, yaitu :1. Matematika, 2. Kriteria Greedy, dan 3. Algoritma Greedy. Dalam kasus ini penulis mencoba menyelesaikan dengan 3 cara di atas.  
Metode Greedy merupakan salah satu cara untuk mendapatkan solusi optimal dalam proses penyimpanan. Pada metode ini untuk mendapatkan solusi optimal dari permasalahan yang mempunyai dua kriteria yaitu Fungsi Tujuan/Utama dan Nilai Pembatas (Constrain). Fungsi Tujuan hanya terdiri atas satu fungsi sedangkan Fungsi Pembatas dapat terdiri atas lebih dari satu fungsi.

2.     3. a. 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:
Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)
Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)
Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)
Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) -> proses selesai

b. Algoritma backtracking untuk menyelesaikan permainan FreeCell.
  1. Apabila status sekarang telah merupakan status final atau status selesai, permainan telah berhasil diselesaikan, return true. Kalau tidak lanjut ke langkah 2.
   2. Kita daftarkan semua langkah yang mungkin dilakukan dari status sekarang.
   3. Apabila tidak ada langkah yang bisa dilakukan maka berarti status sekarang tidak dapat  melahirkan penyelesaian. Backtracking ke status sebelumnya. Apabila tidak ada lagi status yang dapat dibacktrack maka berarti tidak ada solusi, return false. Apabila masih ada langkah yang bisa dilakukan, lanjut ke langkah 4.
4. Kita ambil satu langkah yang pertama dari list, hapus langkah yang diambil tersebut dari   list dan kita lakukan langkah tersebut sehingga membentuk status yang baru.
5. Apabila status yang baru tersebut sudah pernah terjadi, kembali ke langkah ke 3. Apabila belum, kita ulangi langkah 1 hingga 5 dengan status yang baru terbentuk.
III.    Penggunaan Metode Heuristik
Salah satu cara yang digunakan untuk meningkatkan efektifitas algoritma adalah dengan menggunakan metode heuristik.
Beberapa di antaranya adalah:
1.  Bila terdapat langkah yang menempatkan kartu pada tumpukan fondasi, dan angka pada kartu tersebut memiliki nilai indeks yang minimal sama dengan nilai indeks tumpukan fondasi lain yang berbeda warna, maka kartu tersebut pasti akan aman untuk ditempatkan di fondasi. Seperti kita ketahui, kartu pada tumpukan fondasi tidak dapat diambil lagi, hal ini menyebabkan terkadang terjadi kesalahan seperti terlalu cepat menaruh kartu pada tumpukan fondasi padahal kartu tersebut masih diperlukan untuk menyangga kartu kartu lain yang berbeda warna dan memiliki angka lebih kecil dari dirinya. Tetapi dengan cara di atas, kesalahan tersebut tidak akan terjadi karena kartu lain yang berbeda warna dan memiliki angka lebih kecil sudah dimasukkan ke dalam tumpukan fondasi.
2.  Bila terdapat langkah yang menempatkan kartu pada tumpukan fondasi, dan kartu tersebut memiliki angka yang lebih tinggi dari angka kartu pada tumpukan fondasi lain yang berbeda warna sebesar n, maka kartu itu akan aman dipindahkan apabila tumpukan fondasi lain yang memiliki warna yang sama dengan kartu tersebut memiliki angka yang lebih kecil sebesar 2n. Hal ini dikarenakan meskipun kita kehilangan kemungkinan untuk menyangga kartu kartu lain dengan memasukkan kartu tersebut, tetapi masih terdapat kartu lain yang memiliki warna yang sama dengan kartu yang kita masukkan yang mampu menggantikan peran kartu yang kita masukkan tersebut. Tentu saja metode ini belum tentu benar karena bisa saja kartu yang kita harapkan dapat mengganti peran kartu lain yang kita masukkan ternyata terdapat di kolom yang paling bawah. Namun demikian, biasanya metode heuristik ini berhasil.
3.  Pada Permainan FreeCell, terdapat gerakan yang disebut super move [6], yaitu gerakan yang memindahkan 2 atau lebih kartu sekaligus dari kolom yang satu ke kolom yang lain. Hal ini bisa dilakukan apabila terdapat ruang lain untuk menyimpan kartu sementara. Misalnya kita memiliki sebuah kolom dengan kartu teratas adalah jack hitam dan 10 merah, selain itu terdapat kolom lain dengan kartu teratas adalah queen merah. Kita dapat memindahkan jack dan 10 sekaligus ke atas queen apabila terdapat sebuah ruang kosong seperti sebuah sel kosong. Sebenarnya yang terjadi adalah pertama tama 10 merah dipindahkan terlebih dahulu ke sel kosong tersebut, lalu jack dipindahkan ke atas queen, dan baru kemudian 10 dipindahkan ke atas jack. Super move akan sangat membantu mempercepat kerja program apabila diimplementasikan, meskipun demikian, super move

juga tidak selalu menuntun kita menuju penyelesaian.
4.  Urutan urutan kartu yang dipindahkan terlebih dahulu cukup penting untuk meningkatkan kemangkusan program. Pemindahan kartu yang salah dari awal akan

membuat program menjadi lambat karena program akan memeriksa semua kemungkinan hingga ditemukan jalan buntu sebelum melakukan runut balik ke awal. Dari penelitian yang telah dilakukan penulis, urutan pemindahan kartu dari yang sebaiknya dilakukan terlebih dahulu adalah sebagai berikut:

    *      Pemindahan kartu ke tumpukan fondasi.
    *      Super move.
    *      Pemindahan kartu dari kolom ke sel kosong.
    *      Pemindahaan kartu dari sel kosong ke kolom atau dari kolom ke kolom lain.
c.
Cara menyelesaikan masalah Knapsack adalah
1. Tentukan Fungsi Tujuan, yaitu mencari nilai maximum dari jumlah hasil perkalian antara nilai profit (Pi) dengan nilai probabilitas (Xi)
Maximum ∑Pi.Xi
2. Tentukan Fungsi Pembatas, yang merupakan hasil penjumlahan dari perkalian antara bobot (Wi) dengan nilai probabilitas (Xi) yang tidak boleh melebihi dari kapasitas media penyimpanan (M)
∑Wi.Xi≤M, dimana
0≤Xi≤1, Pi>0, Wi>0
Dari ke-2 cara di atas berarti kita harus mengetahui
1. Jumlah objek (n)
2. Bobot setiap objek (Wi)
3. Profit setiap objek (Pi)
4. Probabilitas setiap objek (Xi), dan
5. Kapasitas media penyimpanan (M)

Jumat, 20 Januari 2012

MAKALAH SORTING

SORTING


                                                     ARI NUR IRAWAN
                                                 TEKNIK INFORMATIKA


                                             POLITEKNIK BANYUWANGI
                                                                 2011
                                                        BANYUWANGI
                    JL. Raya Jember KM3 Labanasem Rogojampi, Telp 0333-636780








Makalah ini membahas tentang beberapa algoritma pengurutan yang biasa digunakan pada lingkungan akademisi. Pengurutan atau Sorting merupakan suatu proses mengatur susunan data-data menurut syarat tertentu. Meskipun pengurutan ini sepertinya hanya sebuah masalah klasik dalam keinformatikaan,namun perannya tidak dapat dipisahkan terutama dalam pengolahan data. Suatu pengolahan data biasanya akan lebih efisien jika datanya telah terurut,seperti Binary Search misalnya. Mengingat pentingnya pengurutan dalam penggunaannya dalam hal keinnformatikaan, maka perlu diketahui algoritma mana yang sebenarnya paling efisien untuk dipakai. Meskipun suatu algoritma pengurutan mempunyai kelebihan dan keterbatasan masing-masing, kompleksitas dan keefisiensiannya tetap harusdipertimbangkan.
Dalam ilmu komputer, algoritma pengurutan (sorting adalah):
1. algoritma yang meletakkan elemen-elemen suatu kumpulan data dalam urutan tertentu atau
2. prosees pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu

2.1.1. Konsep Selection Sort
Algoritma pengurutan sederhana salah satunya adalah Selection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting ascending (menaik), elemen yang paling kecil di antara elemen-elemen yang belum urut,disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang palingbesar yang disimpan indeksnya kemudian ditukar. Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus daripada algoritma lain yang lebih rumit dalam situasi tertentu.
Algoritma ini bekerja sebagai berikut:
1.      Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list
2.      Menukarkan nilai ini dengan elemen pertama list
3.      Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua.
Secara efisien kita membagi list menjadi duabagian yaitu bagian yang sudah diurutkan, yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan bagian list yang elemennya akan diurutkan.

2.2.1. Konsep Insertion Sort
Algoritma insertion sort adalah sebuah algoritma sederhana yang cukup efisien untuk mengurutkan sebuah list yang hampir terurut. Algorima ini juga bisa digunakan sebagai bagian dari algoritma yang lebih canggih. Cara kerja algoritma ini adalah dengan mengambil elemen list satu-per-satu dan memasukkannya di posisi yang benar seperti namanya. Pada array, list yang baru dan elemen sisanya dapat berbagi tempat di array, meskipun cukup rumit. Untuk menghemat memori, implementasinya menggunakan pengurutan di tempat yang membandingkan elemen saat itu dengan elemen sebelumnya yang sudah diurut, lalu menukarnya terus sampai posisinya tepat. Hal ini terus dilakukan sampai tidak ada elemen tersisa di input. Seperti sudah dibahas di bagian pendahuluan, salahsatu implementasinya pada kehidupan sehari-hari adalah saat kita mengurutkan kartu remi. Kita ambil kartu satuper-satu lalu membandingkan dengan kartu sebelumnya untuk mencari posisi yang tepat. Variasi pada umunyayang dilakukan terhadap array pada insertion sort adalah
sebagai berikut :
1.      Elemen awal di masukkan sembarang, lalu elemen berikutnya dimasukkan di bagian paling akhir.
2.      Elemen tersebut dibandingkan dengan elemen ke(x-1). Bila belum terurut posisi elemen
3.      sebelumnya digeser sekali ke kanan terus sampai elemen yang sedang diproses menemukan    posisi yang tepat atau sampai elemen pertama. Setiap pergeseran akan mengganti nilai elemenberikutnya, namun hal ini tidak menjadi persoalan sebab elemen berikutnya sudahdiproses lebih dahulu.

Pengertian/Konsep Buble Sort
Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutan gelembung.
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. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat.

Kelebihan Bubble Sort
  • Metode Buble Sort merupakan metode yang paling simpel
  • Metode Buble Sort mudah dipahami algoritmanya
Kelemahan 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.
Algoritma Bubble Sort
  1. 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).
  2. 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.
  3. 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.
  4. Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.
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:
Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)
Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)
Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)
Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) -> proses selesai
Analisis Algoritma Bubble Sort
Tujuan dari analisis  algoritma adalah untuk  mengetahui efisiensi dari algoritma. Dalam hal ini dilakukan pembandingan antara dua atau lebih algoritma pengurutan.Tahap analisis adalah melakukan pengecekan program untuk memastikan bahwa program telah benar secara logika maupun sintak (tahap tracing atau debugging). Tahap selanjutnya yaitu menjalankan program untuk mengetahui running time atau waktu komputasi dalam hal ini
termasuk jumlah langkah. Data uji yang digunakan adalah data yang tidak terurut atau data random, terurut membesar/, dan terurut mengecil.
Salah satu cara untuk menganalisa kecepatan algoritma sorting saat running time adalah dengan menggunakan notasi Big O. Algoritma  sorting mempunyai kompleksitas waktu terbaik, terburuk, dan rata-rata.  Dengan notasi Big O, kita dapat mengoptimalkan penggunaan algoritma sorting. Sebagai contoh, untuk kasus  dimana jumlah masukan untuk suatu pengurutan banyak, lebih baik digunakan algoritma sorting seperti quick sort, merge sort, atau heap sortkarena kompleksitas waktu untuk kasuk terburuk  adalah  O(n log n). Hal ini tentu akan sangatberbeda jika kita menggunakan algoritma sorting insertion sort atau bubble sort dimana waktu yang dibutuhkan
untuk melakukan pencarian akan sangat lama. Hal ini disebabkan kompleksitas waktu terburuk untuk algoritma sorting tersebut dengan jumlah masukan yang banyak adalah O(n2).
Dari grafik dibawah dapat diketahui buble sort adalah metode yang paling lambat dari yang lambat-lambat..heheheh..
Description: Analisis Algoritma Buble Sort
Grafik Metode Pengurutan berode O(n2)



Merge sort
Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945.
Prinsip utama yang diimplementasikan pada algoritma merge-sort seringkali disebut sebagai pecah-belah dan taklukkan (bahasa Inggris: divide and conquer). Cara kerja algoritma merge sort adalah membagi larik data yang diberikan menjadi dua bagian yang lebih kecil. Kedua larik yang baru tersebut kemudian akan diurutkan secara terpisah. Setelah kedua buah list tersusun, maka akan dibentuk larik baru sebagai hasil penggabungan dari dua buah larik sebelumnya. Menurut keefektifannya, alogaritma ini bekerja dengan tingkat keefektifan
            data dibagi menjadi subkumpulan-subkumpulan yang kemudiansubkumpulan tersebut diurutkan secara terpisah, dan kemudian digabungkan kembali dengan metode merging. algoritma ini  melakukan metode pengurutan merge sort juga untuk mengurutkan subkumpulandata tersebut, atau dengan kata lain, pengurutan dilakukan secara rekursif.

Klasifikasi Algoritma Pengurutan (sorting)

 Exchange Sort
melakukan pembandingan antar data, dan melakukan pertukaran apabila urutan yang
didapat belum sesuai.
Contohnya : Bubble sort, Cocktail sort, Comb sort, Gnome
sort, Quicksort.

Selection Sort
mencari elemen yang tepat untuk diletakkan di posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan.
Contohnya :Selection sort, Heapsort, Smoothsort, Strand sort







Insertion Sort
mencari tempat yang tepat untuk suatu elemen data yang telah diketahui ke dalam subkumpulan data yang telah terurut, kemudian melakukan penyisipan (insertion) data di tempat yang tepat tersebut tepat tersebut.
Contohnya adalah : Insertion sort, Shell sort, Tree sort, Library sort, Patience sorting.

Non-Comparison Sort
proses pengurutan data yang dilakukan algoritma ini tidak terdapat pembandingan
antardata, data diurutkan sesuai dengan pigeon hole principle.
Contohnya adalah : Radix sort, Bucket sort, Counting sort,
Pigeonhole sort , Tally sort