Sortir penyisipan
Kami pertama kali memperkenalkan semacam penyisipan. Saya percaya bahwa kebanyakan orang telah bermain poker, banyak orang suka berurusan dengan kartu dan mendapatkan kartu di tangan mereka, dan mengatur kartu. Awalnya, tangan kiri kami kosong dan kartunya ada di atas meja. Kemudian kami mengambil satu kartu dari meja setiap kali dan memasukkannya ke posisi di tangan kiri. Untuk menemukan posisi yang benar dari sebuah kartu, kami membandingkannya dengan setiap kartu yang sudah ada di tangan dari kanan ke kiri.
Kode palsu:
INSERTION-SORT (A) // A adalah larik
untuk j = 2 sampai A. panjang
kunci = A
// (Sisipkan A ke dalam urutan sortir A)
i = j-1
ketika saya > 0 dan A > kunci
A = A
i = i-1
A = kunci
Implementasi kode Java:
// Jenis naik
public void InsertSortAscending (int A) {
untuk (int j = 1; j < A.length; j ++) {
int kunci = A;
// Sisipkan A ke dalam urutan pengurutan A
int i = j-1;
ketika saya > = 0 A > kunci){
A = A ;
i = i-1;
}
A = kunci;
}
}
Mari kita lihat langkah-langkah operasi sortir penyisipan
Gunakan larik A sebagai contoh
Di setiap loop for, persegi panjang kuning adalah nilai A. Pada loop while pada baris 7, bandingkan dengan nilai persegi panjang biru di sebelah kiri. Panah biru menunjukkan bahwa array telah pindah satu posisi ke kanan di baris 8, dan panah kuning menunjukkan di mana kata kunci di baris 11 telah dipindahkan.
Siklus pertama: seperti gambar di bawah ini
Siklus kedua: seperti gambar di bawah ini
Catatan: Disini A lebih besar dari A, karena A pasti lebih besar dari A, jadi tidak perlu membandingkan ukuran A dan A. Perulangan while akan keluar karena kondisi tidak terpenuhi.
Siklus ketiga: seperti gambar di bawah ini
Siklus keempat: seperti yang ditunjukkan pada gambar di bawah ini
Siklus kelima: seperti gambar di bawah ini
Array A sekarang ditunjukkan pada gambar:
Pada siklus keenam nilai j bernilai 6 dan tidak memenuhi siklus j < A. kondisi panjang, keluar loop.
- Status quo mesin litografi domestik setidaknya 10 tahun di belakang, di manakah masa depan "China Chip"?
- Kehangatan kekuatan kebaikan menghantam Upacara Amal "Jalan Anak-Anak yang Indah" di Stasiun Beijing untuk mengumpulkan lebih dari 13,21 juta dana
- Kabar baik dari Chinese Academy of Sciences sekali lagi, "Curve overtaking" di bidang teknologi tinggi, dengan level teknis teratas
- Jembatan cincin X ketiga selatan dalam dan selatan luar? Naik bus Chengdu tidak lagi terlalu "selatan"
- Weibo mendorong anak muda untuk masuk daftar dengan pinjaman online? Weibo meminjam uang dan mengeluarkan pernyataan sebagai tanggapan atas keraguan
- Wang Yifang berkontribusi pada sains Tiongkok, dan semua hadiah uang 500.000 dolar AS disumbangkan untuk membangun sebuah kapal penumbuk besar