Tuesday, 7 April 2015

Selection sort

Dalam ilmu komputer, semacam seleksi adalah algoritma sorting, khususnya perbandingan semacam di tempat. Memiliki O (n2) kompleksitas waktu, sehingga tidak efisien dalam daftar besar, dan umumnya melakukan lebih buruk daripada jenis penyisipan yang sama.

Seleksi semacam terkenal karena kesederhanaan, dan memiliki keunggulan kinerja dari algoritma yang lebih rumit dalam situasi tertentu, terutama di mana memori tambahan terbatas.Algoritma membagi daftar masukan menjadi dua bagian: sublist barang sudah disortir, yang dibangun dari kiri ke kanan di depan (kiri) dari daftar, dan sublist dari item yang tersisa akan diurutkan yang menempati sisa daftar. Awalnya, sublist diurutkan kosong dan sublist disortir adalah seluruh daftar masukan.

Algoritma hasil dengan menemukan terkecil (atau terbesar, tergantung menyortir order) elemen dalam sublist disortir, menukarnya dengan elemen disortir paling kiri (meletakkan terurut), dan memindahkan batas sublist satu elemen ke kanan.Berikut adalah contoh dari algoritma semacam ini menyortir lima elemen: 

64 25 12 22 11 // ini adalah awal, mulai keadaan array
11 25 12 22 64 // diurutkan sublist = {} 11
11 12 25 22 64 // diurutkan sublist = {11, 12} 
11 12 22 25 64 // diurutkan sublist = {11, 12, 22} 
11 12 22 25 64 // sublist diurutkan = {11, 12, 22, 25} 
11 12 22 25 64 // sublist diurutkan = {11, 12, 22, 25, 64}


Seleksi semacam animasi . Merah adalah min saat ini . Kuning diurutkan daftar . Biru adalah item saat ini . ( Tidak ada yang muncul berubah pada dua baris terakhir karena dua angka terakhir sudah dalam rangka ) Seleksi semacam ini juga dapat digunakan pada daftar struktur yang membuat menambah dan menghapus efisien , seperti linked list . Dalam hal ini lebih umum untuk menghapus elemen minimum dari sisa daftar, dan kemudian masukkan pada akhir nilai diurutkan sejauh ini. Sebagai contoh:
64 25 12 22 11
11 64 25 12 22
11 12 64 25 22
11 12 22 64 25
11 12 22 25 64
/* a[0] to a[n-1] is the array to sort */
int i,j;
int iMin;
/* advance the position through the entire array */
/*   (could do j < n-1 because single element is also min element) */
for (j = 0; j < n-1; j++) {
    /* find the min element in the unsorted a[j .. n-1] */
    /* assume the min is the first element */
    iMin = j;
    /* test against elements after j to find the smallest */
    for ( i = j+1; i < n; i++) {
        /* if this element is less, then it is the new minimum */ 
        if (a[i] < a[iMin]) {
            /* found new minimum; remember its index */
            iMin = i;
        }
    }
    if(iMin != j) {
        swap(a[j], a[iMin]);
    }
}


Itulah sedikit informasi Semoga bermanfaat
source = http://en.wikipedia.org/wiki/Selection_sort