"该页上的脚本造成IE运行缓慢,如果继续运行,您的计算机将变的更满,是否取消该脚本?"如脚本需要运超时长运行是会出现这个问题,我的方法是把其分开时间片来运行,即是设置setTimeout,让程序运行一个时间片便"休息"一下,否则浏览器必死无疑~~~~~~~~~

解决方案 »

  1.   

    function BascSort(Data,Index)
    {
    var MaxCount=257;
    var count1;
    var count2;
    var MaxBasc=0;
    var index=0;
    var BascIndex=1;

    window.status="Sort Begin";

    //for(var a=0;a<MaxCount;a++)
    //{
    // count1[a]=new Array();
    // count2[a]=new Array();
    //}

    Sort(Data,Index);

    function GetChar(data,Index)
    {
    var bi3=data.charCodeAt(data.length-Index);
    if(bi3>0xff)
    {
    var bi4=bi3&0xff00;
    var bi5=bi3&0xff;
    bi4=bi4>>8;
    bi3=bi4+bi5;
    }
    return bi3;
    }

    function Sort(Data,Index)
    {
    window.status="0%";
    index=Index;

    count1=new Array();
    while(Data.length>0)
    {
    var temp=Data.shift();
    var bs1=temp[index];
    var bi1=bs1.length;
    if(bi1>MaxBasc)
    {
    MaxBasc=bi1;
    }


    if(bi1>=BascIndex)
    {
    var bi01=GetChar(bs1,BascIndex)+1;
    var array=count1[bi01];
    if(array==null)
    {
    array=new Array();
    count1[bi01]=array;
    }
    array.push(temp);
    }
    else
    {
    var array=count1[0];
    if(array==null)
    {
    array=new Array();
    count1[0]=array;
    }
    array.push(temp);
    }
    } window.status=(BascIndex/MaxBasc*100).toPrecision(4)+"%";
    BascIndex++;



    var end=2;

    while(MaxBasc>=BascIndex)
    {
    if(MaxBasc>=BascIndex)
    {
    count2=new Array();
    while(count1.length>0)
    {
    var valu1=count1.shift();
    if(valu1==null)
    {
    continue;
    }
    while(valu1.length>0)
    {
    var temp=valu1.shift();
    var bs1=temp[index];

    if(bs1.length>=BascIndex)
    {
    var bi01=GetChar(bs1,BascIndex)+1;
    var array=count2[bi01];
    if(array==null)
    {
    array=new Array();
    count2[bi01]=array;
    }
    array.push(temp);
    }
    else
    {
    var array=count2[0];
    if(array==null)
    {
    array=new Array();
    count2[0]=array;
    }
    array.push(temp);
    }
    }



    }
    window.status=(BascIndex/MaxBasc*100).toPrecision(4)+"%";
    BascIndex++;
    end=1;
    }

    if(MaxBasc>=BascIndex)
    {
    count1=new Array();
    while(count2.length>0)
    {
    var valu1=count2.shift();
    if(valu1==null)
    {
    continue;
    }
    while(valu1.length>0)
    {
    var temp=valu1.shift();
    var bs1=temp[index];

    if(bs1.length>=BascIndex)
    {
    var bi01=GetChar(bs1,BascIndex)+1;
    var array=count1[bi01];
    if(array==null)
    {
    array=new Array();
    count1[bi01]=array;
    }
    array.push(temp);
    }
    else
    {
    var array=count1[0];
    if(array==null)
    {
    array=new Array();
    count1[0]=array;
    }
    array.push(temp);
    }
    }

    }
    window.status=(BascIndex/MaxBasc*100).toPrecision(4)+"%";
    BascIndex++;

    end=2;
    }
    }

    var SortArray;
    if(end==1)
    {
    SortArray=count2;
    }
    else
    {
    SortArray=count1;
    }

    var c=0;


    Data.splice(0,Data.length);
    while(SortArray.length>0)
    {
    var valu1=SortArray.shift();
    if(valu1==null)
    {
    continue;
    }
    while(valu1.length>0)
    {
    var temp=valu1.shift();
    Data.push(temp);
    }


    }
    window.status= "Sort End";
    }
    }优化过的程序,勉强达到使用要求....这可是最快的排序算法啊...晕
    这个功能不用JavaScript ,改用JAVA APP 了呵呵.