В качестве примера:

Код AS3:
const LOWER:String = "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя";
const UPPER:String = "АБВГҐДЕЄЖЗИIЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ";
function sortUkr(a:String, b:String):int
{
var i:int = Math.min(a.length, b.length);
var j:int;
var ai:int;
var bi:int;
var ca:String;
var cb:String;
var isUpper:Boolean;
while (j < i)
{
ca = a.charAt(j);
cb = b.charAt(j);
ai = Math.max(LOWER.indexOf(ca), UPPER.indexOf(ca));
bi = Math.max(LOWER.indexOf(cb), UPPER.indexOf(cb));
if (ai < bi) return -1;
else if (ai > bi) return 1;
j++;
}
if (a.length < b.length) return -1;
else if (a.length > b.length) return 1;
return 0;
}
var arr:Array = [];
var i:int = 10;
var j:int;
var s:String;
while (i--)
{
j = 1 + Math.random() * 10;
s = "";
while (j--)
{
if (Math.random() > 0.49)
{
s += LOWER.charAt((Math.random() * LOWER.length) >> 0);
}
else
{
s += UPPER.charAt((Math.random() * UPPER.length) >> 0);
}
}
arr.push(s);
}
trace(arr.join("\r"));
trace("-------------------");
arr = arr.sort(sortUkr);
trace(arr.join("\r"));
Ну только латинские символы или знаки препинания и цифры нужно будет тоже отдельно обработать.