Golang Sıralama Dilim Örnekleri

Golang Siralama Dilim Ornekleri



Sıralama, öğeleri belirli bir sıraya koymayı içeren temel bir programlama işlemidir. Go'nun resmi kitaplığının sunduğu sıralama paketi, dilimleri hızlı bir şekilde sıralamak için çeşitli işlevler içerir. Dilimleri sıralamak, verileri sunum için düzenlemekten arama algoritmalarını optimize etmeye kadar birçok uygulamada yaygın bir görevdir. Bu makale, farklı sıralama tekniklerini araştırıyor ve sıralama paketini kullanarak Go'daki kullanımlarını gösteriyor.

Örnek 1: Golang Dilimi Artan Düzende Sırala

“Sort.Slice()” işlevi, dilimin öğelerini artan veya azalan düzende yeniden düzenleyen Go'daki en önemli işlevdir. Dilimin artan sırada düzenlendiği aşağıdaki çizimi dikkate alın:

paket ana
içe aktarmak (
'fmt'
'düzenlemek'
)
işlev ana () {
çift ​​dilim := [] int { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Yazdır ( 'Sıralanmamış dilim:' , çift ​​dilim )
düzenlemek . Dilim ( çift ​​dilim , işlev ( Ben , J int ) bool {
geri dönmek çift ​​dilim [ Ben ] < çift dilim [ J ]
})
fmt . Yazdır ( 'Sıralı dilim:' , çift ​​dilim )
}

main() fonksiyonunun başında {10, 2, 8, 4, 0, 6} değerleri ile evenSlice dilimini tanımlıyoruz. Bu dilim, başlangıçta sıralanmamış olan çift sayıların bir koleksiyonunu temsil eder. evenSlice dilimini sıralamak için dilimle birlikte sort.Slice() işlevi kullanılır. sort.Slice() işlevinin içinde, bağımsız değişken olarak bir sıralama işlevi sağlanır. Bu fonksiyon, dilimin iki öğesini “i” ve “j” indekslerinde karşılaştırarak sıralama düzenini belirler. çift ​​Dilim[i], çift Dilim[j]'den küçükse, doğru döndürür; aksi halde false döndürür. sort.Slice() işlevi, 'evenSlice' diliminin öğelerini artan düzende yeniden düzenlemek için bu karşılaştırma işlevini kullanır.







Artan düzende sıralanan dilimin sonuçları aşağıdaki çıktı ekranında oluşturulur:





Örnek 2: Golang Sıralama Parça Dilimi

Daha sonra sıralama, Go'daki sort.Slice() işlevi kullanılarak belirtilen dilimin alt dilimine artan düzende uygulanır.





paket ana
içe aktarmak (
'fmt'
'düzenlemek'
)
işlev ana () {
N := [] int { 9 , 7 , 3 , 5 }
başlangıç := 0
son := 3
düzenlemek . Dilim ( N [ başlangıç : son ], işlev ( Ben , J int ) bool {
geri dönmek N [ başlangıç + Ben ] [ başlangıç + J ]
})
fmt . Yazdır ( N )
}

Başlangıç ​​olarak [9, 7, 3, 5] değerleri ile “n” dilimini oluşturuyoruz. Ek olarak, iki değişken, “start” ve “end” sırasıyla 0 ve 3 olarak ayarlanmıştır. Bu değişkenler, sıralanacak “n” dilimindeki indeks aralığını tanımlar. 'Sort.Slice()' işlevi daha sonra ilk bağımsız değişken olarak 'n[start:end]' alt dilimiyle çağrılır. Bu alt dilim, belirtilen aralıkta “n” elemanlarını içerir. Bundan sonra sort.Slice() fonksiyonu içinde ikinci argüman olarak bir sıralama fonksiyonu verilir.

Burada, bu işlev, alt dilim içindeki öğeleri temsil eden 'i' ve 'j' olmak üzere iki indeks alır. Alt dilim içindeki öğeleri karşılaştırmak için, sıralama işlevi başlangıç ​​dilimini kullanarak orijinal dilimdeki karşılık gelen öğelere erişir. n[başlangıç+i] ve n[başlangıç+j'yi karşılaştırır.Ardından, sort.Slice() işlevi, alt dilim içindeki öğeleri artan düzende yeniden düzenlemek için sağlanan sıralama işlevini kullanır.



Aşağıdaki çıktı, belirtilen aralık (başlangıç-bitiş-1) içindeki öğelerin sıralandığını ve aralığın dışındaki öğelerin değişmeden kaldığını gösterir:

Örnek 3: Sort.Ints() İşlevini Kullanarak Golang Tamsayı Dilimini Sıralayın

Ayrıca, tamsayı dilimlerini sıralamak için en uygun yöntem, özel sıralama yöntemlerini uygulamaya ihtiyaç duymadan sort.Ints() işlevidir. Doğrudan tamsayı dilimleri üzerinde hareket eder ve yerinde bir sıralama gerçekleştirir. Aşağıdaki program belirtilen tamsayıları sıralar:

paket ana
içe aktarmak (
'fmt'
'düzenlemek'
)
işlev ana () {
IntSlice := [] int { 10 , 13 , onbeş , on bir , 14 , 12 }
fmt . Yazdır ( 'Sıralanmamış dilim:' , IntSlice )
düzenlemek . girişler ( IntSlice )
fmt . Yazdır ( 'Sıralı dilim:' , IntSlice )
}

İlk olarak, başlangıçta sıralanmamış tamsayılar koleksiyonunu temsil eden [10, 13, 15, 11, 14, 12] değerleriyle “IntSlice” dilimini ilan edip başlatıyoruz. Ardından, 'IntSlice' dilimini sıralamak için argüman olarak 'IntSlice' dilimi ile sort.Ints() işlevi çağrılır. Bu durumda sort.Ints() işlevi, optimize edilmiş bir sıralama algoritmasına göre dilimin her bölümünü dahili olarak sıralar. Öğelerini sıralanmış bir düzende yeniden düzenleyerek orijinal dilimi doğrudan değiştirir.

Aşağıdaki çıktı ilk olarak sıralanmamış dilimin önce görüntülendiğini, ardından sıralanmış dilimin geldiğini gösterir:

Örnek 4: Golang Sıralama Dize Dilimi

Go ayrıca, bir dizge dilimini belirli bir sırayla sıralamak için kullanılan sort paketinin sort.Strings() işlevini de sunar. Burada, aşağıdaki program dize dilimini sıralamaya yardımcı olur:

paket ana
içe aktarmak (
'fmt'
'düzenlemek'
)
işlev ana () {
strSl := [] sicim { 'golan' , 'piton' , 'java' , 'Perl' , 'daktilo' }
düzenlemek . Teller ( strSl )
fmt . Yazdır ( strSl )
}

Sıralanmayan [“golang”, “python”, “java”, “perl”, “typescript”] değerleri ile öncelikle “strSl” dilimini oluşturduk. Ardından “strSl” dilimini, dilimin öğelerini sözlük sırasına göre sıralayan sort.Strings() fonksiyonu ile sıralıyoruz. Bu işlev, öğelerini ASCII değerlerine göre sıralanmış düzende yeniden düzenleyerek orijinal dilimi doğrudan değiştirir.

Çıktı, dize dilimini aşağıda gösterildiği gibi artan şekilde sıralar:

Örnek 5: IntAreSort() İşlevini Kullanarak Golang Sıralama Dilimini Kontrol Edin

Ancak, Go'nun sort.IntsAreSorted() işleviyle, belirli bir tamsayı diliminin artan düzende sıralanıp sıralanmadığını kontrol edebiliriz. Verilen dilim için IntAreSort() işlevinin aşağıdaki örnek programını düşünün:

paket ana
içe aktarmak (
'fmt'
'düzenlemek'
)
işlev ana () {
sl := [] int { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
fmt . Yazdır ( 'Dilimler:' )
fmt . Yazdır ( 'Sıralanmamış Dilim: ' , sl )
sonuç := düzenlemek . Girişler Sıralandı ( sl )
fmt . Yazdır ( ' \N Sonuç:' )
fmt . Yazdır ( 'Verilen Dilim sıralanır mı?: ' , sonuç )
}

İlk olarak, rastgele tam sayıların sıralanmamış bir dilimi “sl” olarak tanımlanır. Bu dilim, belirli bir sırada olmayan bir tamsayı koleksiyonu içerir. Ardından sort.IntsAreSorted() işlevini çağırıyoruz ve 'sl' dilimini argüman olarak iletiyoruz. Bu işlev, dilim girişinin artan düzende düzenlenip düzenlenmediğini gösteren bir Boolean sonucu sağlar. Ardından, fmt.Println() işlevi, verilen dilimin döndürülen Boolean değerine göre sıralanıp sıralanmadığını gösteren sonuçları yazdırır.

Çıktı, bir tamsayı diliminin sıralanmamış olduğu için sıralama düzeni için yanlış görüntüler:

Örnek 6: Golang Ters Sıralama Dilimi

Ayrıca, Go'daki sort paketindeki sortReverse() ve sortStringSlice() işlevlerini kullanarak, bir dize dilimini tersine sıralayabiliriz. Aşağıdaki program sort.Reverse() işlevinin çalışmasını göstermektedir:

paket ana
içe aktarmak (
'fmt'
'düzenlemek'
)
işlev ana () {
ünlü Dilim := [] sicim { 'Bu' , 'A' , 'Ben' , 'içinde' , 'Ö' }
fmt . Yazdır ( 'Sıralamadan önce :' , ünlü Dilim )
düzenlemek . Düzenlemek ( düzenlemek . Tersi ( düzenlemek . Dize Dilim ( ünlü Dilim )))
fmt . Yazdır ( 'Sıralamadan sonra :' , ünlü Dilim )
}

“e”, “a”, “i”, “u” ve “o” ünlülerini içeren “vowelSlice” dizisinin bir dilimini tanımlayarak başlıyoruz. Belirtilen dize diliminin ilk içeriği önce 'yazdır' işlevi kullanılarak yazdırılır. Ardından, sıralama işlemi, argüman olarak sort.Reverse() ve sort.StringSlice() işlevleriyle sort.Sort() işlevi kullanılarak gerçekleştirilir. Burada 'sort.Reverse()', öğelerin sırasını tersine çeviren yeni bir tür oluşturur. VowelSlice'ı sıralanabilir bir türe dönüştüren argümanı olarak 'sort.StringSlice' türünü alır.

Buradaki çıktı sesli harfleri ters alfabetik sırada görüntüler:

Çözüm

Sağlanan dilimi sıralayan örneklerle çeşitli sıralama işlevlerini inceledik. Ayrıca alt dilimlerin sıralanması ve bir dilimin zaten sıralanıp sıralanmadığını kontrol etme konusunu da ele aldık. Bu nedenle, Go projelerinde çok çeşitli sıralama zorluklarının üstesinden gelmek için sıralama paketinin yeteneklerinden yararlanabiliriz.