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 类定义的4种方法
Sep 12 Javascript
javascript创建数组之联合数组的使用方法示例
Dec 26 Javascript
JavaScript中的数据类型转换方法小结
Oct 26 Javascript
js is_valid_filename验证文件名的函数
Jul 19 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
利用JS制作万年历的方法
Aug 16 Javascript
浏览器调试动态js脚本的方法(图解)
Jan 19 Javascript
vue使用技巧及vue项目中遇到的问题
Jun 04 Javascript
详解vue axios二次封装
Jul 22 Javascript
Angular(5.2-&gt;6.1)升级小结
Dec 27 Javascript
JavaScript中window和document用法详解
Jul 28 Javascript
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
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
安装APACHE
2007/01/15 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
jquery图片切换插件
2015/03/16 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
Python定时器实例代码
2017/11/01 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
银行实习人员自我鉴定
2013/09/22 职场文书
高中毕业自我鉴定
2013/12/19 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android
Java版 简易五子棋小游戏
2022/05/04 Java/Android