Turning gears are the logo of co-scripts

Pek çok yazılım dilinde sayısal veya metinsel tabanlı sıralama için hazır fonksiyonlar vardır. Metinsel sıralama ise ASCII kodlarına göre  sayısal sıralamadan ibarettir. Ancak hangi dilde olursa olsun arkasında yatan mantık halihazırda bilinen bir veya birkaç algoritmayı kurmakta kullanılır. Şuradan sıralama algoritmaları ile ilgili tüm detaya ulaşabilirsiniz. Burada da güzel bir Türkçe metni var konunun.

Javascript içinde kullanılan sanırım bubbling (baloncuk) denen sıralama. Teknik olarak çok iyi bilmiyorum konuyu ancak basitçe anladığım kadarıyla, dizideki tüm sayıları teker teker birbiriyle kıyaslayarak büyük-küçük durumlarına göre yerlerini değiştiriyor.

Bunu yaparken bir ek fonksiyonu geri çağırarak yardım alıyor. Bu tip fonksiyonlara callback fonksiyonlar deniyor. Sırayla sayıları iki parametre olarak alt fonksiyona gönderiyor.

Alt fonksiyon gönderilen sayılardan ilki ikincisinden büyükse pozitif bir sayı değilse negatif bir sayı çeviriyor. Eğer dönen sonuç sıfır ise sayılar matematik olarka eşittir ve dizideki sıralarıyla yer alırlar, zaten sonuçta değişmez.

Alt fonksiyonda kullanılan temsili parametrelerden a ve b alfabetik önceliktedirler. Yani a ilk sayıyı b ikinci sayıyı temsil eder. Bu nedenle  artan sıralama için a,b veya azalan sıralama için b,a sıralarıyla işleme sokulurlar.

Sayılardan oluşan bir dizi tanımlayalım.

 

var bizimDizi = [4,78,2,134];

Bu dizimizi sırasıyla artan ve azalan olarak sıralarsak;

// Artan olarak sıralama
bizimDizi.sort(function(a,b){return a - b});
alert(bizimDizi); // 2,4,78,134
// Şimdi de azalan olarak sıralama
bizimDizi.sort(function(a,b){return b - a});
alert(bizimDizi); // 134,78,4,2

Böylece elimizdeki sayılardan oluşan diziyi artan-azalan olarak sıralayabiliyoruz. Burada anında çağrılan içteki fonksiyon sadece sıfırdan küçük, sıfır veya sıfırdan büyük değer döndürmekle görevlidir.

Metin bazlı sıralamada doğurdan metinDizisi.sort(); şeklinde kullanım vardır.

Büyük dizilerde ve özel kullanım gerektiren durumlarda farklı algoritmaları kendimizde yazabiliriz. Kaynaklarda bununla ilgili örneklerde bulunabilir.

co-scripts tag image sorting algorithmjavascript sortsayisal siralamanumerical sortingbubbling sort algorithmcallbackascending sortazalan siralamadescending sortartan siralama
ID:244 | Okunma:2158