华为笔试 排序题

<!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]);
i++;
}
if(j<arr2Len){
strArr.push(arr2[j]);
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[i]))){int1=parseInt(str1Arr[i])};
if(!isNaN(parseInt(str2Arr[i]))){int2=parseInt(str2Arr[i])};
if(int1!=0 && int2!=0)
{
if(int1>int2){
flag=1;
break;
}else if(int1<int2){
flag=-1;
break;
}
}else{
if(str1Arr[i].localeCompare(str2Arr[i])>0){
flag=1;
break;
}else if(str1Arr[i].localeCompare(str2Arr[i])<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[j],strs[j-1])<0)
{
tmp=strs[j];
strs[j]=strs[j-1];
strs[j-1]=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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值