A) Prinsip : Setiap kali, pilih elemen terkecil dari catatan yang akan diurutkan, dan letakkan di urutan di akhir urutan yang diurutkan sampai semua catatan diurutkan. Artinya, setiap perjalanan dipilih sebagai catatan i-th dalam urutan yang dipesan di antara catatan N-I+1 (i = 1, 2, ... n-1). Algoritma berdasarkan ide ini terutama termasuk penyortiran pilihan sederhana, penyortiran pemilihan pohon dan penyortiran tumpukan. (Ini hanya penyortiran pilihan sederhana yang umum)
b) Ide dasar pemilihan penyortiran sederhana : diberikan array: int [] arr = {n data di dalamnya}; Penyortiran pertama kali, pilih data terkecil dalam data yang akan diurutkan ARR [1] ~ arr [n], dan bertukar dengan ARR [1]; Kali kedua, pilih data terkecil dalam data yang akan diurutkan ARR [2] ~ arr [n], dan pertukaran dengan R [2]; Dan seterusnya, pilih data terkecil dalam data yang akan diurutkan ARR [i] ~ arr [n], dan bertukarnya dengan r [i] sampai semua penyortiran selesai.
C) Contoh : array int [] arr = {5,2,8,4,9,1};
-------------------------------------------------------
Pesanan Pertama: Data Asli: 528491
Data minimum 1, letakkan 1 pertama, yaitu, 1 dan 5 posisi pertukaran,
Urutkan Hasil: 128495
-------------------------------------------------------
Urutan kedua:
Data di luar 1 {28495} dibandingkan, 2 adalah yang terkecil,
Urutkan Hasil: 128495
-------------------------------------------------------
Urutan ketiga:
Data selain 1 dan 2 dibandingkan {8495}, 4 minimal, 8 dan 4 dipertukarkan
Urutkan Hasil: 124895
-------------------------------------------------------
Pesanan keempat:
Data lain selain 1, 2, 4 dibandingkan {895}, 5 minimum, 8 dan 5 dipertukarkan
Urutkan Hasil: 124598
-------------------------------------------------------
Urutan kelima:
Data lain selain 1, 2, 4, 5 dibandingkan, 8 minimal, 8 dan 9 dipertukarkan
Urutkan Hasil: 124589
-------------------------------------------------------
Catatan: Metode untuk mendapatkan angka terkecil di setiap pesanan: agar loop dapat membandingkan, tentukan suhu variabel ketiga. Pertama, bandingkan dua angka pertama, masukkan angka yang lebih kecil di suhu, dan kemudian gunakan temp untuk dibandingkan dengan data yang tersisa. Jika data lebih kecil dari suhu muncul, gunakan itu alih -alih data asli dalam temp. Untuk detailnya, merujuk pada contoh kode di bawah ini, saya yakin Anda telah mempelajari pernyataan Loop sebelum belajar mengurutkan. Dengan cara ini, akan sangat mudah dimengerti di sini.
Contoh kode:
// Pilih Sortir Publik Public ClassORT {public static void main (string [] args) {int [] arr = {1,3,2,45,65,33,12}; System.out.println ("Sebelum pertukaran:"); untuk (int num: arr) {system.out.print (num+""); } // Pilih optimalisasi penyortiran untuk (int i = 0; i <arr.length - 1; i ++) {// urutkan urutan i -th int k = i; untuk (int j = k+1; j <arr.length; j ++) {// pilih catatan terkecil if (arr [j] <arr [k]) {k = j; // Perhatikan lokasi nilai minimum yang ditemukan sejauh ini}} // setelah akhir loop dalam, yaitu, setelah menemukan jumlah minimum loop ini, kemudian bertukar jika (i! = K) {// bertukar [i] dan [k] int temp = arr [i]; arr [i] = arr [k]; arr [k] = temp; }} System.out.println (); System.out.println ("After Swap:"); untuk (int num: arr) {system.out.print (num+""); }}}Tangkapan layar hasil berjalan:
Pilih kompleksitas waktu penyortiran: jumlah perbandingan jenis seleksi sederhana tidak ada hubungannya dengan penyortiran awal urutan. Dengan asumsi bahwa urutan yang akan diurutkan memiliki elemen N, jumlah perbandingan akan selalu menjadi N (N-1)/2. Jumlah gerakan terkait dengan penyortiran awal urutan. Ketika urutannya positif, jumlah gerakan adalah yang paling sedikit, yaitu 0. Ketika urutan terbalik diurutkan, gerakan terbanyak adalah 3N (n-1)/2.
Jadi, secara ringkas, kompleksitas waktu penyortiran sederhana adalah O (N2).