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 可排列的表实现代码
Nov 13 Javascript
JavaScript中switch语句的用法详解
Jun 03 Javascript
JQuery包裹DOM节点的方法
Jun 11 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
Jan 26 Javascript
使用webpack打包koa2 框架app
Feb 02 Javascript
简单的vuex 的使用案例笔记
Apr 13 Javascript
vue iview实现动态路由和权限验证功能
Apr 17 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
JS实现头条新闻的经典轮播图效果示例
Jan 30 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
Oct 01 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
PHP编程网上资源导航
2006/10/09 PHP
用户的详细注册和判断
2006/10/09 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
JS常用算法实现代码
2016/11/14 Javascript
JS中的作用域链
2017/03/01 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
python实现微信小程序自动回复
2018/09/10 Python
python安装pil库方法及代码
2019/06/25 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
授权收款委托书范本
2014/10/10 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书