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 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
js 为label标签和div标签赋值的方法
Aug 08 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
js实现无缝循环滚动
Jun 23 Javascript
vue.js评论发布信息可插入QQ表情功能
Aug 08 Javascript
原生JS封装_new函数实现new关键字的功能
Aug 12 Javascript
Vue在页面数据渲染完成之后的调用方法
Sep 11 Javascript
如何解决js函数防抖、节流出现的问题
Jun 17 Javascript
Js和VUE实现跑马灯效果
May 25 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
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
微信小程序 教程之小程序配置
2016/10/17 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
python实现dict版图遍历示例
2014/02/19 Python
对于Python的框架中一些会话程序的管理
2015/04/20 Python
python实现烟花小程序
2019/01/30 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
社区敬老月活动实施方案
2014/02/17 职场文书
员工辞职信范文大全
2015/05/12 职场文书