sgamerv

博客园 首页 新随笔 联系 订阅 管理
<script>
    //用来调用排列方法的类
    function arr_sort(arr){
        var startTime,endTime;
        var priv_arr = new Array;
    
        for(var key in arr){
            priv_arr.push(arr[key]);
        }
    
        this.get_arr = function(){
            return priv_arr
        }
            
            
        //快速排序
        this.sort1 = function(){
            startTime = new Date().getTime();
            quickSort(0,priv_arr.length-1);
            endTime = new Date().getTime();
        }
    
        function swap(l,r){
        var temp = priv_arr[l];
        priv_arr[l] = priv_arr[r];
        priv_arr[r] = temp;    
        }
    
        function quickSort(left,right){
            if(left<right){
                var i=left-1;
                var last = priv_arr[right];
                var j = right;
                while(true){
                    while(priv_arr[++i] < last);
                    while(j>0){
                    if(priv_arr[--j] <= last)break;
                    }
                    if(i>=j)break;
                    swap(i,j)
                }
                swap(i,right);
                quickSort(left,i-1);
                quickSort(i+1,right);
            }
        }
        //合并排序
        this.sort2 = function(){
                startTime = getCurrTime();
                merge_split(priv_arr,0,priv_arr.length-1);
                endTime = getCurrTime();    
        }
        
        function merge_split(arr,left,right){
            if(left >= right){
                return;
            }
            var middle=(left+right)>>>1;
            //document.write(left+"\t"+middle+"\t"+right+"<br>");
            merge_split(arr,left,middle);
            merge_split(arr,middle+1,right);
            merge(arr,left,right,middle);
        }
        
        function merge(arr,l,r,m){
            var i =l;
            var j =m+1; 
            //document.write(l+"\t"+m+"\t"+r+"<br>");
            while(i<j&&j<=r){
                //document.write("$$"+i+"\t"+"\t"+j+"<br>");
                if(arr[i]>arr[j]){
                    var t = arr[j];
                    for(var k=j;k>i;k--){
                        arr[k]=arr[k-1];
                    }
                    arr[i]=t;
                    //document.write("####"+priv_arr.toString()+"<br>");                                        
                    j++;
                }
                i++;                
            }
            //document.write(priv_arr.toString()+"<br>");
        }
        
        function getCurrTime(){
            return new Date().getTime();
        }
        this.getExTime = function(){
            document.write(startTime+" "+endTime+"<br>");
            return endTime - startTime;
        }
    }
    
    
    //用来生成随即数组的函数
        function random_array(size){
                var arr = new Array;
                for(var i=0;i<size;i++){
                    arr.push(parseInt(Math.random()*100));
                }
                return arr;
        }
        
        var arr_test = random_array(3000);
        document.write(arr_test.toString()+"<br>");

    var sort1 = new arr_sort(arr_test);
    var sort2 = new arr_sort(arr_test);
    var dur_time;
    sort1.sort1();
    var my_arr1 = sort1.get_arr();
    sort2.sort2();
    var my_arr2 = sort2.get_arr();
    document.write("quick_sort:<br>");
    document.write(my_arr1.toString()+"<br>");
    document.write("Time:"+sort1.getExTime()+"<br>");
    document.write("merge_sort:<br>");
    document.write(my_arr2.toString()+"<br>");
    document.write("Time:"+sort2.getExTime()+"<br>");
    document.write(arr_test.toString()+"<br>");
</script    >

 

posted on 2013-10-17 01:41  sgamerv  阅读(216)  评论(0编辑  收藏  举报