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 相关文章推荐
Javascript实现真实字符串剩余字数提示的实例代码
Oct 22 Javascript
js简单实现HTML标签Select联动带跳转
Oct 23 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
Nov 12 Javascript
javascript实例--教你实现扑克牌洗牌功能
May 15 Javascript
简单易用的倒计时js代码
Aug 04 Javascript
详解AngularJS中的作用域
Jun 17 Javascript
JavaScript中eval函数的问题
Jan 31 Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
vue.js实现h5机器人聊天(测试版)
Jul 16 Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 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
Protoss兵种介绍
2020/03/14 星际争霸
Yii2中cookie用法示例分析
2016/07/18 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
基本DOM节点操作
2017/01/17 Javascript
详解angular element()方法使用
2017/04/08 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
Python实现list反转实例汇总
2014/11/11 Python
Python3匿名函数用法示例
2018/07/25 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
python中下标和切片的使用方法解析
2019/08/27 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
名词解释型面试题(主要是网络)
2013/12/27 面试题
vue路由实现登录拦截
2021/03/24 Vue.js
项目计划书范文
2014/01/09 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
英语教育专业自荐信
2014/05/29 职场文书
超市客服工作职责
2014/06/11 职场文书
2014年英语工作总结
2014/12/20 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
文明倡议书
2015/01/19 职场文书
会计稽核岗位职责
2015/04/13 职场文书
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python