JavaScript实现快速排序(自已编写)


Posted in Javascript onDecember 19, 2012

简述
用到javascript的排序一组数字,js没有直接的数字比较的函数可以调用,所以自己写了一个快速排序
知识点:
1. 正则表达式提取正负数字的string
2. str 转数字 放回列表
3. js的对象Sort类的声明及定义
4. Sort类构造函数、成员函数定义方式(prototype)
5. 快速排序算法
代码

<!DOCTYPE html> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />. 
<html> 
<title>Quick Sort</title> 
<head> 
<script type = "text/javascript"> 
/*************Get Number From Input***********/ 
function getNumList(){ 
var result = ""; 
var nums = document.getElementById('numbers').value; 
var reg = /([-][1-9][0-9]*)|([1-9][0-9]*)/g; 
var numStrList = nums.match(reg); 
var numList = new Array(); 
if(numStrList != null){ 
for(var i = 0;i < numStrList.length;i++){ 
var intNumber = parseInt(numStrList[i]); 
numList.push(intNumber); 
} 
} 
return MainProgram(numList); 
}; /*****************Main*************************/ 
function MainProgram(numList){ 
var sort = new Sort(numList); 
var sortedList = sort.getSortedList(); 
if(sortedList == null) 
document.getElementById('result').innerHTML = "WRONG INPUT"; 
else{ 
document.getElementById('result').innerHTML = sortedList.join(','); 
} 
} 
/**************Sort Class***********************/ 
var Sort = function(list){ 
this.resultList = list; 
}; 
Sort.prototype.Partition = function(start,end){ 
var baseValue = this.resultList[start]; 
var basePos = start; 
for(var j = start + 1;j <= end;j++){ 
if(baseValue > this.resultList[j]){ 
basePos++; //move the base position 
this.Swap(basePos,j); 
} 
} 
// move the base value to the correct place , before are smaller , behind are bigger 
this.Swap(start,basePos); 
return basePos; 
} 
Sort.prototype.QuickSort = function(start,end){ 
if(start < end){ 
var basePos = this.Partition(start,end); 
this.QuickSort(start,basePos - 1); 
this.QuickSort(basePos + 1, end); 
} 
}; 
Sort.prototype.Swap = function(pos1,pos2){ 
var temp = this.resultList[pos1]; 
this.resultList[pos1] = this.resultList[pos2]; 
this.resultList[pos2] = temp; 
} 
Sort.prototype.getSortedList = function(){ 
this.QuickSort(0,this.resultList.length - 1); 
return this.resultList; 
}; 
</script> 
</head> 
<body> 
<B> Quick Sort</B> 
<br> 
<br> 
<input type= "text" id = 'numbers' value = '' /> 
<input type = 'button' value = "exec" onclick = 'getNumList()'/> 
<br> 
<br> 
<B>SORTED LIST: <B> <b id = 'result'></b> 
</body> 
</html>

输出:
JavaScript实现快速排序(自已编写)
Javascript 相关文章推荐
jquery 上下滚动广告
Jun 17 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
Apr 26 Javascript
javascript中取前n天日期的两种方法分享
Jan 26 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Apr 01 Javascript
JS实现的论坛Ajax打分效果完整实例
Oct 31 Javascript
原生javascript实现addClass,removeClass,hasClass函数
Feb 25 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
老生常谈jacascript DOM节点获取
Apr 17 Javascript
微信小程序实现YDUI的ScrollTab组件
Feb 02 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
openLayer4实现动态改变标注图标
Aug 17 Javascript
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 Javascript
js 使用form表单select类实现级联菜单效果
Dec 19 #Javascript
JS限制上传图片大小不使用控件在本地实现
Dec 19 #Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
Dec 19 #Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 #Javascript
ajax java 实现自动完成功能
Dec 19 #Javascript
JavaScript字符串String和Array操作的有趣方法
Dec 18 #Javascript
学习js在线html(富文本,所见即所得)编辑器
Dec 18 #Javascript
You might like
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
python简单的函数定义和用法实例
2015/05/07 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
TensorFlow如何实现反向传播
2018/02/06 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
python/golang 删除链表中的元素
2020/09/14 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
软件工程师面试题
2012/06/25 面试题
关于毕业的广播稿
2014/01/10 职场文书
新年晚会主持词
2014/03/24 职场文书
食品安全工作方案
2014/05/07 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
2014年电工工作总结
2014/11/20 职场文书
联欢会开场白
2015/06/01 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
python基础之函数的定义和调用
2021/10/24 Python