比如给一个整数序列[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))

相关文章:

  • 2021-10-15
  • 2021-08-02
  • 2021-10-01
  • 2021-07-30
  • 2022-12-23
  • 2021-06-30
  • 2021-11-02
  • 2021-12-02
猜你喜欢
  • 2021-12-19
  • 2021-09-16
  • 2021-12-05
  • 2022-12-23
  • 2021-11-10
  • 2018-04-16
  • 2021-08-27
相关资源
相似解决方案