Skip to content

Soʻzlarni alifbo tartibida saralash algoritmi

Ba’zi hollarda so’zlarni alifbo tartibida saralashga ehtiyoj paydo bo’ladi. Dasturlash tillarida mavjud saralash funksiyalari hozirgi o’zbek alifbosidagi harflar tartibi bo’yicha saralashga imkon bermaydi.

Ammo bu muammoni juda oddiy usulda hal qilish mumkin. Bu yerda taklif qilingan saralash algoritmi juda oddiy va professional dasturchi bundan ham qulayroq va samaraliroq algoritm yaratishi mumkin.

Algoritm JavaScript misolida keltirilgan.

Birinchi navbatda, alifbodagi harflarni raqamlar bilan ifodalab chiqamiz:

letters = ["oʻ","gʻ","ʼ","sh","ch","a","b","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","x","y","z"];
lettersAsNumbers = ["25.","26.","29.","27.","28.","00.","01.","02.","03.","04.","05.","06.","07.","08.","09.","10.","11.","12.","13.","14.","15.","16.","17.","18.","19.","20.","21.","22.","23.","24."];

Bunda o’, g’, tutuq belgisi, sh va ch ro’yxatga eng avval kiritilganiga e’tibor bering. Bunga sabab shuki, keyingi qadamlarda so’zlardagi harflarni birma-bir almashtirishda, bu murakkab harflar birinchi galda o’girilishi kerakligidir.

Oddiygina massiv elementlarini ishlatib, matnni o’giradigan funksiya yozamiz:

function replaceArray(text,a1,a2) {
for(var i = 0; i < a1.length; i++) {
var pat = new RegExp(a1[i], "g");
text = text.replace(pat, a2[i]);
}
return text;
}

Bu funksiya berilgan matndagi har bir harfni son ifodasiga o’girish va keyinchalik son ifodadagi harflarni o’z ko’rinishiga qaytarish uchun kerak bo’ladi.

Endi so’zlarni son saralash funksiyasini yozamiz:

function sortWords(words) {
for (var key in words){
words[key] = replaceArray(words[key], letters, lettersAsNumbers);
};
words.sort();
for (var key in words){
words[key] = replaceArray(words[key], lettersAsNumbers, letters);
};
return words;
}

E’tibor bering, funksiyaga so’zlar massivi uzatilishi lozim va funksiya alifbo tartibida saralangan so’zlar massivini qaytaradi.

Bu kabi algoritmlar bevosita so’zlar bilan ishlaydigan dasturlarda – masalan, lug’atlar tuzishda qo’l kelishi mumkin.

Algoritm kodini quyidagi gitdan ham olishingiz mumkin.