PHP:
<?
$array = array(); //создаем массив
$array[0] = "Борис";
$array[1] = "Аверин";
$array[2] = "Миронова";
$array[3] = "Temp";
$array[4] = "Борисенков";
$array[5] = "Миронов";
$array[6] = "Template";
$array[7] = "Алексеев";
$array[8] = "Александрова";
$array[9] = "Борисов";
$array[10] = "Бодров";
uasort ($array, "sort_by_lang");
#uasort ($array, "sort_by_first");
print '<pre>';
print_r ($array);
function sort_by_lang ($a,$b)
{
$i=0;
$char1 = substr ($a,$i,1);
$char2 = substr ($b,$i,1);
if (ord($char1)==ord($char2)) {
while (ord($char1)==ord($char2))
{
if (ord($char1)==ord($char2)) {$i++;} else {
return (ord($char1) > ord($char2)) ? -1 : 1;}
$char1 = substr ($a,$i,1);
$char2 = substr ($b,$i,1);
}} else {return (ord($char1) < ord($char2)) ? -1 : 1;}
}
function sort_by_first ($a,$b)
{
$char1 = substr ($a,0,1);
$char2 = substr ($b,0,1);
if (ord($char1) == ord($char2)) {return 0; exit;}
return (ord($char1) < ord($char2)) ? -1 : 1;}
?>
<?
$array = array(); //создаем массив
$array[0] = "Борис";
$array[1] = "Аверин";
$array[2] = "Миронова";
$array[3] = "Temp";
$array[4] = "Борисенков";
$array[5] = "Миронов";
$array[6] = "Template";
$array[7] = "Алексеев";
$array[8] = "Александрова";
$array[9] = "Борисов";
$array[10] = "Бодров";
uasort ($array, "sort_by_lang");
#uasort ($array, "sort_by_first");
print '<pre>';
print_r ($array);
function sort_by_lang ($a,$b)
{
$i=0;
$char1 = substr ($a,$i,1);
$char2 = substr ($b,$i,1);
if (ord($char1)==ord($char2)) {
while (ord($char1)==ord($char2))
{
if (ord($char1)==ord($char2)) {$i++;} else {
return (ord($char1) > ord($char2)) ? -1 : 1;}
$char1 = substr ($a,$i,1);
$char2 = substr ($b,$i,1);
}} else {return (ord($char1) < ord($char2)) ? -1 : 1;}
}
function sort_by_first ($a,$b)
{
$char1 = substr ($a,0,1);
$char2 = substr ($b,0,1);
if (ord($char1) == ord($char2)) {return 0; exit;}
return (ord($char1) < ord($char2)) ? -1 : 1;}
?>
правда работаем не совсем стабильно. Еще подумаю на досуге как сделать.