Hola de nuevo.
furoya: Es importante conocer el lenguaje parar poder llevar a cabo una idea, pero sin ideas ese conocimiento es en vano. Digo esto porque la idea que tuviste me parece muy buena y es lo más importante, la forma de llevarla a cabo es secundario, depende de los conocimientos del lenguaje para aprovechar mejor sus recursos, por eso aunque yo tengo unos pocos conocimientos sobre expresiones regulares y poco más de arrays, sin tu idea, el camino que hubiera escogido para desarrollar el método hubiera sido más arduo y complejo en el caso de haberlo conseguido.
En cuanto a que sabes poco o nada de arrays, viendo tu script no es tanta la diferencia entre los dos, creo que con aprender el funcionamiento de expresiones regulares y con lo que esta aprendiendo sobre arrays esta poca diferencia sera nula en poco tiempo.
No se que algoritmo utilizara sort() para ordenar los elementos pero dentro de los algoritmos para ordenar que hay, quicksort es uno de los más rápidos.
Te envío esta dirección para que veas los algoritmos más conocidos para ordenar para que te hagas una idea de como funcionan.
http://www.alumnos.unican.es/%7Euc16069/Javascript.htm
En cuanto a las preguntas que planteas, he estado indagando sobre que codificación de caracteres.
Haz esta prueba, copia el resultado de este script y pegalo en el block de notas, veras que si intentas guardarlo en codificación ANSI , te saldrá un mensaje avisando de que existe caracteres UNICODE.
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript" type="text/javascript">
<!--
var s = "String.fromCharCode(32"
for (var Counter = 33; Counter < 400; Counter++) {
s += "," + Counter
}
s += ")"
document.write(eval(s))
//-->
</script>
</body>
</html>
Como sabes la codificación UNICODE permite representar cualquier carácter escrito en en el mundo, y los navegadores están preparados para leer cualquier idioma, si prueba el script en Mozilla y IE veras que algunos caracteres no aparecen en IE, creo que esto depende los paquetes de idiomas que tenga el navegador instalados y la configurado el usuario, creo que es suficiente con la configuración que viene por defecto para los caracteres occidentales.
No se nada de alemán , pero modificando un poco el script anterior, podrías conseguir adaptarlo al aleman.
Por ejemplo si quiseramos ordenar æ después de á bastaría con añadir unas lineas.
for(var ctr = 0; ctr < this.length ; ctr++){
temp_array[ctr] = this[ctr]
// Sustituimos las vocales acentuadas y la ñ (mininusculas)
temp_array[ctr] = temp_array[ctr].toString().replace(/á|é|í|ó|ú|ñ/g,function (str,offset,s) {
str =str=="á"?"a{":str=="é"?"e{":str=="í"?"i{":str=="ó "?"o{":str=="ú"?"u{":str=="ñ"?"n{":"n{"
return (str)
}
)
//Sustituimos las vocales acentuadas y la ñ (mayúsculas)
temp_array[ctr] = temp_array[ctr].toString().replace(/Á|É|Í|Ó|Ú|Ñ/g,function (str,offset,s) {
str =str=="Á"?"A{":str=="É"?"E{":str=="Í"?"I{":str=="Ó "?"O{":str=="Ú"?"U{":str=="Ñ"?"N{":"N{"
return (str)
}
)
// caracteres alemanes
temp_array[ctr] = temp_array[ctr].toString().replace(/æ/g,function (str,offset,s) {
str =str=="æ"?"a|":"a|"
return (str)
}
)
}
El resultado seria para á seria a{ y para æ a|, al ordenar el signo { va antes que | por lo tanto ordinaria primero la a acentuada.
Espero haberme explicado bien, no es mi fuerte. Corrigeme si me equivoco en algo.
Saludos