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 相关文章推荐
三种Node.js写文件的方式
Mar 08 Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
如何利用JSHint减少JavaScript的错误
Aug 23 Javascript
jQuery ajax的功能实现方法详解
Jan 06 Javascript
jQuery表格(Table)基本操作实例分析
Mar 10 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
4个顶级开源JavaScript图表库
Sep 29 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
Sep 28 Javascript
前端深入理解Typescript泛型概念
Mar 09 Javascript
vue选项卡切换的实现案例
Apr 11 Vue.js
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
关于尾递归的使用详解
2013/05/02 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
将python安装信息加入注册表的示例
2019/11/20 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
自动化专业职业生涯规划书范文
2014/01/16 职场文书
大学新生军训方案
2014/05/03 职场文书
减负增效提质方案
2014/05/23 职场文书
信访工作经验交流材料
2014/05/23 职场文书
企业宗旨标语
2014/06/10 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
幼师小班个人总结
2015/02/12 职场文书
认真学习保证书
2015/02/26 职场文书
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
volatile保证可见性及重排序方法
2022/08/05 Java/Android