排序还可以这样做

比如给一个整数序列[5,5,3,3,9,9,4,4,0,0,6,6,8,8,2,2,7,7,1,1],只需要把序列中的每个元素在中间数组标识一下,如5可以标识为arrTemp[5]=1,如果序列中还有这个元素可以标识为arrTemp[5]=2,如此arrTemp=[2,2,2,2,2,2,2,2,2,2],再把arrTemp翻译为结果[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9],这样做时间复杂度为2*len,具体代码如下(未做输入参数检查):

var  SF  =  {
    Sort : 
function (arr){
        
var  arrTemp  =  []
        
var  index  =   - 1
        
for ( var  i = 0 ; i < arr.length; i ++ ){
            
var  item  =  arr[i]
            //if(arrTemp[item] == 1){
           
if (arrTemp[item]  >=   1 ){
                arrTemp[item]
++
            }
else {
                arrTemp[item] 
=   1
            }
        }
        
        
var  arrR  =  []
        
for ( var  i = 0 ; i < arrTemp.length; i ++ ){
            
var  item  =  arrTemp[i]
            
if (item){
                
for ( var  j = 0 ; j < item; j ++ ){
                    arrR.push(i)
                }
            }
        }
        
return  arrR
    }
}
var  arr  =  [ 5,5,3,3,9,9,4,4,0,0,6,6,8,8,2,2,7,7,1,1 ]
alert(SF.Sort(arr))

转载于:https://www.cnblogs.com/boolean/archive/2007/04/14/712867.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值