Dizileri sıralamak, Java'ya yeni başlayan birinin nasıl yapılacağını bilmesi gereken en yaygın işlemlerden biridir. Diziler her zaman verileri düzenlemenin en uygun yolu olmasa ve bu çoğunlukla küçük sayılar için geçerli olsa da, dizi sıralamanın ardındaki kavram, karmaşık yazılım ve veri biliminde tonlarca uygulamaya sahiptir. Bu yazıda, ekleme sıralamasının ne olduğuna daha yakından bakacağız. Bu konsepti tamamen anlamanıza yardımcı olmak için bazı örnekler ve uygulama problemleri ekledik.
Ekleme sıralamasının girdisine ve çıktısına daha yakından bakalım:
Ekleme Sıralaması Nedir?
Temel olarak, eklemeli sıralama, geliştiricilerin küçük sayı dizilerini düzenlemek için kullandıkları bir algoritmadır. Tüm değerleri iki yığına ayırır - sıralanmış ve sıralanmamış. "Sıralanmamış" yığındaki sayılar birer birer seçilir ve doğru sıraya konur.
- Girdi: sıralanmamış sayısal öğeler içeren bir A dizisi: A[0,1, n, n-2...].
- Çıktı: aynı sayıları içeren ancak tamamen sıralanmış bir dizi. Bu, tipik olarak B: B[0]B[1]...B[n-1] olarak adlandırılır.
- Sayısal sıralama (artan düzen): [1, 2, 3, 4, 5]
- Sayısal sıralama (azalan düzen): [5, 4, 3, 2, 1]
- Alfabetik sıralama: [a, b, c, d]
Ekleme Sıralaması Teorisini Anlamak
Ekleme sıralamanın arkasındaki kodu keşfetmeden önce, teknik olmayan bir dil kullanarak algoritmayı parçalayalım. Sıralama kodunu artan düzende göstereceğimiz için, bu yazıda algoritmayı adım adım açıklamak mantıklı olacaktır. Adım 1. Sayısal bir değerin genellikle 10'dan küçük olduğuarr[1]
ve arr[n]
arasında yineleme . Adım 2. Seçtiğiniz öğeyi ( olarak bilinir ) yöntemi kullanarak dizideki önceki sayıyla karşılaştırın . Adım 3. Tüm öğeler ardıllarından daha küçükse, daha büyük bir değer bulana kadar karşılaştırmayı tekrarlayın. Adım 4. Sıralı bir dizi oluşturmak için daha büyük bir değeri küçük değerin bir konumu ile değiştirin. n
key
sort()
Adım 5. Sıralanmış bir karakter dizisi elde edene kadar işlemi tekrarlayın.
İlkel dizileri sıralama
Algoritma en basit Java işlemlerinden biri olduğu için, tamamen yeni başlayanlar bile onu uygulamakta çok fazla sorun yaşamamalıdır. İşte bir diziyi sıralamak için adım adım bir kılavuz1. Sıralama için bir dizi bildirin
Başlamak için, daha sonra Java kullanarak göstereceğimiz bir değerler dizisi oluşturalım. Ekleme sıralamasını kullanmak için bir dizi oluşturmanız gerekir. Bunun için kullanınint[]
int[] arrayA = {10, 14, 20, 30};
2. Algoritmayı uygulamak için sort_arr kullanın
sort_arr yöntemi, eklemeli sıralamayı uygulamanın en yaygın yollarından biridir. Pratikte şöyle görünür:
for(int i=0; i< sort_arr.length; ++i){
int j = i;
3. Bir döngü ve yineleyici oluşturun
Ekleme sıralama algoritmasında bir döngü kullanarak, geliştiricilerin mantığı her öğe için tekrar etmesi gerekmez. Döngüler oluşturmak karmaşık görünse de oldukça basittir - işte bir örnek:
for(int i=0; i< sort_arr.length; ++i){
Artık çalışan bir döngünüz olduğuna göre, tüm öğeleri istenen sırada sıralayacak bir yineleyici oluşturma zamanı. Bundan sonra iteratöre " " olarak atıfta bulunacağız j
.
int j = i;
4. Bir "while döngüsü" oluşturma
Eklemeli sıralama söz konusu olduğunda, yeni, sıralanmış bir dizi için bir "while" döngüsü gereklidir. Bunu artan sıralı ekleme sıralaması için ayarlamak üzere bir geliştiricinin iki koşula uyması gerekir:- j'ye atanan değer 0'dan büyük olmalıdır
- Atanan değerin
j-1
dizinden büyük olması gerekirj
j
.
5. Diziyi sıralama
While döngüsünü kurduktan sonra, while döngüsündeki koşullardan biri veya her ikisi de başarısız olana kadarj
ve değerleri değiştirilir. j-1
Benzer şekilde sıralama, for döngüsü koşulları da başarısız olana kadar for döngüsündeki her değer için tekrarlanacaktır. Araya ekleme sıralama işlemi pratikte şu şekilde çalışır:
int key = sort_arr[j];
sort_arr[j] = sort_arr[j-1];
sort_arr[j-1] = key;
j = j-1;
Bir ArrayList'i Sıralama
Eklemeli sıralamanın arkasındaki matematiği anlamak önemli olsa da, gerçek hayattaki yazılım geliştirme söz konusu olduğunda, ArrayList'leri ilkel dizilerdeki dizilerden çok daha fazla sıralayacaksınız. İşte bir ArrayList'i sıralamak için adım adım bir kılavuz:Element
Koleksiyona ait öğeler için yeni bir sınıf oluşturun .public class Element { private int id; public Element(int id) { this.id = id; }
- Bir koleksiyon içinde bir yöntem vardır
compareTo()
- bunu iki öğenin kimliklerini karşılaştırmak için kullanacağız.public int compareTo(Element element) { int res = 0; if (this.id < element.getId()) { res = -1; } if (this.id > element.getId()) { res = 1; } return res; } }
- Algoritmayı uygulayın ve nesneleri
ArrayList
karşılaştırmak yerine sıralamak için bazı döngüler oluşturun.public static void insertionSortArrayList(List<element> list) { for (int j = 1; j < list.size(); j++) { Element current = list.get(j); int i = j-1; while ((i > -1) && ((list.get(i).compareTo(current)) == 1)) { list.set(i+1, list.get(i)); i--; } list.set(i+1, current); } }
ArrayList
Aşağıda gösterildiği gibi daha fazla öğe de ekleyebilirsiniz :List<element> list = new ArrayList<>(); // Create elements w/ IDs 0-24 for (int i = 0; i < 25; i++) { list.add(new Element(i)); } // To use insertion sort, shuffle the values Collections.shuffle(list);
- Şimdi sıralama zamanı:
// This helps print values before sorting list.forEach(e -> System.out.print(e.getId() + ", ")); // Sort the list insertionSortArrayList(list); System.out.println(); // Display a sorted array list.forEach(e -> System.out.print(e.getId() + ", "));
- Şimdi hata yapmadığımızdan emin olmak için girdi ve çıktıyı karşılaştıralım. İşte örnek olarak kullandığımız dizenin karşılaştırması.
4, 2, 6, 7, 0, 5, 9, 1, 8, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
GO TO FULL VERSION