Ekleme sıralaması
İlk olarak, araya yerleştirme sıralaması sunuyoruz. Çoğu insanın poker oynadığına inanıyorum, birçok insan bir kartla uğraşmayı ve ellerine bir kart almayı ve kartları sıraya koymayı sever. Başlangıçta sol elimiz boştu ve kartlar masadaydı. Sonra her seferinde tablodan bir kart alıp sol el konumuna yerleştiriyoruz. Bir kartın doğru pozisyonunu bulmak için, onu zaten sağdan sola eldeki her kartla karşılaştırıyoruz.
Sahte kod:
INSERTION-SORT (A) // A bir dizidir
j = 2 ila A. uzunluk için
anahtar = A
// (A sıralama dizisine A ekleyin)
i = j-1
ben iken > 0 ve A > anahtar
A = A
i = i-1
A = anahtar
Java kodu uygulaması:
// Artan sıralama
public void InsertSortAscending (int A) {
for (int j = 1; j < A. uzunluk; j ++) {
int anahtar = A;
// A sıralama dizisine A ekle
int i = j-1;
süre (ben > = 0 A > key) {
A = A ;
i = i-1;
}
A = anahtar;
}
}
Ekleme sıralamanın işlem adımlarına bir göz atalım
Örnek olarak A dizisini kullanın
Her bir for döngüsünde sarı dikdörtgen A'nın değeridir. 7. satırdaki while döngüsünde, soldaki mavi dikdörtgenin içindeki değerle karşılaştırın. Mavi ok, dizinin 8. satırda bir konum sağa hareket ettiğini gösterir ve sarı ok, 11. satırdaki anahtar kelimenin nereye taşındığını gösterir.
İlk döngü: aşağıda gösterildiği gibi
İkinci döngü: aşağıda gösterildiği gibi
Not: Burada A, A'dan büyüktür çünkü A, A'dan büyük olmalıdır, bu nedenle A ve A'nın boyutlarını karşılaştırmaya gerek yoktur. While döngüsü, koşul karşılanmadığından çıkacaktır.
Üçüncü döngü: aşağıda gösterildiği gibi
Dördüncü döngü: aşağıdaki şekilde gösterildiği gibi
Beşinci döngü: aşağıda gösterildiği gibi
A dizisi şimdi şekilde gösterilmektedir:
Altıncı döngüde, j 6'dır ve j döngüsünü karşılamaz < A. uzunluk koşulu, döngü çıkışı.