关于数组中字符串的排序有什么更好的解决方法么

关于数组中字符串的排序有什么更好的解决办法么
一含有各种字符的数组(数字和大写字母为主),要求数字排在在字母之后,整体为升序排序,不知有什么更好的办法呢?或者以下代码可以做哪些优化?

        var arry=["STEWARTS RT BEER 6/4/12 NR",
                  "7-UP 4/6/8 CN",
                  "1217-UP TEN 2/12 CN",
                   "DIET 7-UP 4/6/8 CN",
                   "1a1",
                  "FIJI 2/4/16.9 PET",
                  "FIJI 6/6/300 ML",
                  "FIJI 24/16.9 PET",
                  "7-UP TEN 2/12 CN",
                  "217-UP TEN 2/12 CN"];
var blnCheck = false;
var i = arry.length,j;
while(i>0){
for(j=0;j<i-1;j++){
len = Math.min(arry[j].length,arry[j+1].length);
for(k=0;k<len;k++){
//若arry[j][K]为数字,j+1不为数字 交换顺序
if((48<=arry[j][k].charCodeAt()&&arry[j][k].charCodeAt()<=57)&&(arry[j+1][k].charCodeAt()<47||arry[j+1][k].charCodeAt()>57)){
blnCheck = true;                     
break;
}
/*若arry[j][K]为数字,j+1为数字
 *或arry[j][K]不为数字,i+1不为数字
 * j>j+1 交换并跳出  j<j+1不交换
 */ 
if(((48<=arry[j][k].charCodeAt()&&arry[j][k].charCodeAt()<=57)&&(48<=arry[j+1][k].charCodeAt()&&arry[j+1][k].charCodeAt()<=57))||(arry[j][k].charCodeAt()<47||arry[j][k].charCodeAt()>57)&&(arry[j+1][k].charCodeAt()<47||arry[j+1][k].charCodeAt()>57)){
 if(arry[j][k]>arry[j+1][k]){
blnCheck = true;
break;  
 }else if(arry[j][k]<arry[j+1][k]){ 
break;
 }  

//若arry[j][K]不为数字,j+1为数字   直接跳出,不需要交换
if((arry[j][k].charCodeAt()<47||arry[j][k].charCodeAt()>57)&&(47<arry[j+1][k].charCodeAt()&&arry[j+1][k].charCodeAt()<58)){
break;
}

}

if (blnCheck) {
tempExchangVal = arry[j];
arry[j] = arry[j + 1];
arry[j + 1] = tempExchangVal;
}
blnCheck = false;
}

i--;
}
//打印结果
arry.forEach(function(e){
document.write("</br>"+e+"</br>");
});

------解决思路----------------------
那是我理解错了。

如果是这样的话,好像只能逐字符比较了。