cfoxklekoj 发表于 2016-6-6 08:48:30

华为笔试 排序题

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>split</title>
<script type="text/javascript">
//数组合并
var MergerArray=function(arr1,arr2)
{

var arr1Len=arr1.length;
var arr2Len=arr2.length;
var strArr=new Array();
var i=0;
var j=0;
var flag=true;
while(flag){
if(i<arr1Len){
   strArr.push(arr1);
   i++;
}
if(j<arr2Len){
   strArr.push(arr2);
   j++;
}
if(i>=arr1Len&&j>=arr2Len)
{
   flag=false;
}
}
return strArr;
}

var ConpareString=function(str1,str2)
{
var flag=0;
//以数字作为分割符
var regS=/\d/;
//以非数字作为分割符
var regN=/\D/;
var str1ArrArp=str1.split(regS);
var str1ArrNum=str1.split(regN);
var str2ArrArp=str2.split(regS);
var str2ArrNum=str2.split(regN);
var str1Arr=new Array();
if(str1.substring(0,1).match(regS)){
str1Arr=MergerArray(str1ArrNum,str1ArrArp);
}
else{
str1Arr=MergerArray(str1ArrArp,str1ArrNum);
}

var str2Arr=new Array();
if(str2.substring(0,1).match(regS)){
str2Arr=MergerArray(str2ArrNum,str2ArrArp);
}
else{
str2Arr=MergerArray(str2ArrArp,str2ArrNum);
}
//计算最小的数组长度
var minLen=str1Arr.length;
if(minLen<str2Arr.length){minLen=str2Arr.length};
for(var i=0;i<minLen;i++){
var int1=0;
var int2=0;
if(!isNaN(parseInt(str1Arr))){int1=parseInt(str1Arr)};
if(!isNaN(parseInt(str2Arr))){int2=parseInt(str2Arr)};
if(int1!=0 && int2!=0)
{
   if(int1>int2){
    flag=1;
    break;
   }else if(int1<int2){
    flag=-1;
    break;
   }
}else{
   if(str1Arr.localeCompare(str2Arr)>0){
    flag=1;
    break;
   }else if(str1Arr.localeCompare(str2Arr)<0){
    flag=-1;
    break;
   }
}
}
return flag;
}
var SortArray=function(strs){
var strsLen=strs.length;
for(var i=0;i<strsLen;i++){
for(j=strsLen-1;j>i;j--){
   if(ConpareString(strs,strs)<0)
   {
   tmp=strs;
   strs=strs;
   strs=tmp;
   }
}
}
return strs;
}

var strs=new Array();
strs.push("A2C");
strs.push("A25");
strs.push("1A9");
strs.push("A10Df");
strs.push("A15");
strs.push("A2C");
strs.push("A25");
strs.push("1A9");
strs.push("A10Df");
strs.push("A15");
document.writeln(SortArray(strs));
</script>
</head>

<body>
</body>
</html>
页: [1]
查看完整版本: 华为笔试 排序题