Anda di halaman 1dari 7

Insertion Sort Insertion sort milik (n2) O algoritma pengurutan.

Tidak seperti banyak algoritma pengurutan dengan kompleksitas kuadrat, hal ini sebenarnya diterapkan dalam praktek untuk menyortir data array kecil. Misalnya, digunakan untuk meningkatkan rutinitas quicksort. Beberapa pemberitahuan sumber, bahwa orang menggunakan algoritma yang sama memesan item, misalnya, tangan kartu. Algoritma Penyisipan algoritma pengurutan selection sort agak menyerupai. Array imajiner dibagi menjadi dua bagian - diurutkan satu dan satu disortir. Pada awalnya, bagian diurutkan mengandung elemen pertama dari array dan satu sisanya berisi disortir. Pada setiap langkah, algoritma mengambil elemen pertama di bagian disortir dan memasukkan ke tempat yang tepat dari satu diurutkan. Ketika bagian disortir menjadi kosong, algoritma berhenti. Lengkap, langkah semacam algoritma penyisipan terlihat seperti ini:

menjadi

Ide sketsa awalnya diumumkan di sini. Mari kita melihat contoh dari rutinitas semacam penyisipan untuk membuat ide yang lebih jelas algoritma.

Contoh.

Urutkan

{7,

-5,

2,

16,

4}

menggunakan

insertion

sort.

Ide-ide penyisipan Operasi utama dari algoritma ini adalah penyisipan. Tugas adalah untuk memasukkan nilai ke bagian diurutkan dari array. Mari kita lihat varian tentang bagaimana kita dapat melakukannya. "Memilah bawah" menggunakan swap. Cara paling sederhana untuk menyisipkan elemen berikutnya ke bagian diurutkan adalah untuk menyaring turun, sampai menempati posisi yang benar. Awalnya elemen tetap tepat setelah bagian diurutkan. Pada setiap langkah algoritma membandingkan elemen dengan satu sebelum dan, jika mereka tinggal di urutan terbalik, swap mereka. Mari kita lihat ilustrasi.

Pendekatan ini menulis elemen diayak ke posisi sementara berkali-kali. Berikutnya implementasi menghilangkan mereka tidak perlu menulis. Pergeseran bukan swapping.Kita dapat memodifikasi algoritma sebelumnya, sehingga akan menulis elemen disaring hanya untuk posisi yang benar akhir. Mari kita lihat ilustrasi. .

Ini merupakan modifikasi paling umum digunakan dari insertion sort.

Menggunakan pencarian biner. Hal ini masuk akal untuk menggunakan algoritma pencarian biner untuk menemukan tempat yang tepat untuk penyisipan. Ini varian dari insertion sort insertion sort disebut biner. Setelah posisi untuk penyisipan ditemukan, algoritma menggeser bagian dari array dan menyisipkan elemen. Versi ini memiliki jumlah yang lebih rendah dari perbandingan, namun rata-rata kompleksitas keseluruhan tetap O (n2). Dari sudut pandang praktis perbaikan ini tidak terlalu penting, karena insertion sort digunakan pada set data yang cukup kecil.

Kompleksitas analisis Keseluruhan kompleksitas semacam penyisipan adalah O (n2) rata-rata, terlepas dari metode penyisipan. Pada jenis array hampir diurutkan penyisipan menunjukkan kinerja yang lebih baik, sampai dengan O (n) dalam kasus menerapkan insertion sort ke array diurutkan. Jumlah menulis adalah O (n2) rata-rata, tetapi jumlah perbandingan dapat bervariasi, tergantung pada algoritma penyisipan. Ini adalah O (n2) ketika menggeser atau menukar metode yang digunakan dan O (n log n) untuk insertion sort biner.

Dari sudut pandang aplikasi praktis, kompleksitas rata-rata insertion sort tidak begitu penting. Seperti telah disebutkan di atas, insertion sort diterapkan pada set data cukup kecil (dari 8 sampai 12 elemen). Oleh karena itu, pertama-tama, sebuah "kinerja praktis" harus dipertimbangkan. Dalam prakteknya insertion sort melebihi sebagian besar algoritma pengurutan kuadrat, seperti semacam seleksi atau bubble sort. Penyisipan sifat semacam adaptif (menyesuaikan dengan kinerja pesanan awal dari elemen-elemen); stabil (insertion sort mempertahankan urutan relatif di tempat (membutuhkan jumlah konstan ruang tambahan); dari elemen yang sama);

- online (elemen-elemen baru dapat ditambahkan selama menyortir). Potongan kode Kami menunjukkan gagasan penyisipan dengan pergeseran dalam pelaksanaan Jawa dan ide penyisipan menggunakan swap dalam potongan kode C + +.

Flowchart Insertion Sort

Java implementation package aplikasisorting; public class InsertionSort { private static void garis (){ System.out.println ("------------------------------------"); } public static void main(String[] args) { int i; int array[] = {170,154,177,167,145}; System.out.println ("Aulia Rahmat "); System.out.println ("5030 "); garis(); garis(); System.out.println("Tinggi badan yang belum terurut: "); for(i = 0; i < array.length; i++) System.out.print( array[i]+" "); System.out.println(); insertion_sort(array, array.length); garis(); System.out.println("Tinggi badan yang sudah terurut: "); for(i = 0; i <array.length; i++) System.out.print(array[i]+" "); System.out.println(); garis(); } public static void insertion_sort(int array[], int n){ for (int i = 1; i < n; i++){ int j = i; int B = array[i]; while ((j > 0) && (array[j-1] > B)){ array[j] = array[j-1]; j--; } array[j] = B; }

} } Hasil :

Anda mungkin juga menyukai