⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 13-3 快速排序.htm

📁 JAVASCRIPT完全自学手册,中源码的验证修订实例
💻 HTM
字号:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312" />
<title>13-3  快速排序</title>
<style>
* { font-size:12px; font-family:宋体, Arial; } /*规定了所有的字体样式*/
body { overflow:auto; }
</style>
<script>
window.onload = function(){
    var ary, st, re, timeCost;
    //变量“timeCost”和“timeCost_a”用于记录排序用时
    timeCost = new Array();
    //生成一个长度1000的随机数组
    ary = create_random_array(1000);
    //记录开始时间
    st = new Date();
    //快速排序
    re = sort(ary);
    //累计用时
    timeCost[0] = ((new Date())-st);
    //生成一个长度1000的顺序数组
    ary = create_ordered_array(1000);
    st = new Date();
    re = sort(ary);
    timeCost[1] = ((new Date())-st);
    //输出结果
    alert("随机数组快速排序耗时 " + timeCost[0] + " 毫秒\r\n顺序数组耗时 " + timeCost[1] + " 毫秒");
}
//新建一个指定长度的数组,并对其元素赋以随机的数值
function create_random_array(len){
    var re = new Array(len);
    for(var i=0; i<len; i++)re[i] = Math.random();
    return(re);
}
//新建一个指定长度的数组,并对其元素赋以顺序的数值
function create_ordered_array(len){
    var re = new Array(len);
    for(var i=0; i<len; i++)re[i] = i;
    return(re);
}
//快速排序算法
function sort(ary){
    var len, ary1, ary2, mid, tmp;
    len = ary.length;
    if(len<3){
        //当数组长度足够小时,采取比较和交换来排序
        if(len == 2 && ary[0]>ary[1]){
            tmp = ary[0];
            ary[0] = ary[1];
            ary[1] = tmp;
        }
        return(ary);
    }else{
        //将数组的第一个元素作为基准
        mid = ary[0];
        //初始化左、右数组
        ary1 = new Array();
        ary2 = new Array();
        //循环访问数组元素并分割
        for(var i=1; i<len; i++){
            if(ary[i]<mid){
                ary1.push(ary[i]);
            }else{
                ary2.push(ary[i]);
            }
        }
        //递归调用本函数对子数组排序,然后将结果合并后返回
        return(sort(ary1).concat(mid, sort(ary2)));
    }
}
</script>
</head>
<body>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -