| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 507 人关注过本帖
标题:使用JavaScript实现的几个排序算法
只看楼主 加入收藏
三月的雪
Rank: 2
等 级:论坛游民
帖 子:18
专家分:35
注 册:2011-4-14
结帖率:0
收藏
 问题点数:0 回复次数:2 
使用JavaScript实现的几个排序算法
对照数据结构与算法这门课用JavaScript实现的几种排序算法。用什么语言不重要,重要的是算法本身。我果然还是用JavaScript实现起来容易些。哎。。。

代码:(保存为html文件即可运行)

程序代码:
<html>
<!--
     几种排序算法的JavaScript实现
     author:linyang
     测试数据:48,37,64,96,75,12,26,48,54,03
-->
<head>
<script type="text/javascript">    
/*需要升序排序的整型数组*/    
var array_to_sort;
function printArray(array){
    alert("当前该整型数组顺序为:" + array.join(','));
}
/*插入排序*/
function insertSort(){
    array_to_sort = document.getElementById('arrayToSort').value.split(',');
    var n = array_to_sort.length/1;
    for(var i=1; i<n; i++){
        for(var j=i; j>0; j--){
            if(array_to_sort[j]/1<array_to_sort[j-1]/1){
                var tmp = array_to_sort[j-1];
                array_to_sort[j-1] = array_to_sort[j];
                array_to_sort[j] = tmp;
            }else
                break;
        }
    }
    printArray(array_to_sort);
}
/*冒泡排序*/
function bubbleSort(){
    array_to_sort = document.getElementById('arrayToSort').value.split(',');
    for(var i=1; i<array_to_sort.length/1; i++){
        for(var j=0; j<array_to_sort.length/1-i; j++){
            if(array_to_sort[j]/1>array_to_sort[j+1]/1){
                var tmp = array_to_sort[j];
                array_to_sort[j] = array_to_sort[j+1];
                array_to_sort[j+1] = tmp;
            }
        }
    }
    printArray(array_to_sort);
}
/*希尔排序*/
function shellSort(){
    array_to_sort = document.getElementById('arrayToSort').value.split(',');
    var delta = new Array();
    var k = array_to_sort.length/1;
    while((k= Math.floor(k/2))>0){
        //k = Math.floor(k/2);
        delta.push(k);
    }
    for(var i=0; i<delta.length; i++){
        var dk = delta[i]; 
        for(var k=delta[i]; k<array_to_sort.length/1;++k)
            if(array_to_sort[k]/1<array_to_sort[k-dk]/1){
                var t = array_to_sort[k];
                for(var j=k-dk;j>=0&&t<array_to_sort[j];j-=dk)
                    array_to_sort[j+dk] = array_to_sort[j];
                array_to_sort[j+dk] = t;
            }
    }
    printArray(array_to_sort);
}
/*快速排序*/
function quickSort(){
    var _quick_sort_ = function(array,low,high){
        var pivot,i,j;
        if(low<high){
            pivot = array_to_sort[low]; i=low; j=high;
            while(i<j){
                while(i<j&&array_to_sort[j]>=pivot) j--;
                if(i<j) array_to_sort[i++] = array_to_sort[j];
                while(i<j&&array_to_sort[i]<=pivot) i++;
                if(i<j) array_to_sort[j--] = array_to_sort[i];
            }
            array_to_sort[i] = pivot;
            _quick_sort_(array,low,i-1);
            _quick_sort_(array,i+1,high);
        }
    }
    array_to_sort = document.getElementById('arrayToSort').value.split(',');
    _quick_sort_(array_to_sort,0,array_to_sort.length-1);
    printArray(array_to_sort);
}
</script>
</head>
<body>
    <b>用JavaScript实现几种常见的排序算法</b>
    <br/>
    请在后面输入需要排序的整数数组,元素间用“,”分割。<input id="arrayToSort" type="text" value=""/>
    <br/>
    <input type="button" value="插入排序" onclick="insertSort();"/>
    <input type="button" value="冒泡排序" onclick="bubbleSort();"/>
    <input type="button" value="希尔排序" onclick="shellSort();"/>
    <input type="button" value="快速排序" onclick="quickSort();"/>
</body>
</html>
搜索更多相关主题的帖子: 算法 
2012-09-27 14:44
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
支持下  js没摸过
2012-09-28 22:22
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
回复 楼主 三月的雪
希尔排序    快速排序 需要改正
2012-10-25 20:41
快速回复:使用JavaScript实现的几个排序算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016484 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved