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 无符号右移运算符
Apr 17 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
Sep 25 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
Jun 10 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
Oct 15 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
Nov 10 Javascript
纯JS实现表单验证实例
Dec 24 Javascript
对于js垃圾回收机制的理解
Sep 14 Javascript
JS逻辑运算符短路操作实例分析
Jul 09 Javascript
layui表格内容溢出的解决方法
Sep 06 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
Jul 18 Javascript
关于小程序优化的一些建议(小结)
Dec 10 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
php实现的双色球算法示例
2017/06/20 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
JS实现判断碰撞的方法
2015/02/11 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
Python中有趣在__call__函数
2015/06/21 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
创先争优制度
2014/01/21 职场文书
本科毕业生自荐信
2014/06/02 职场文书
出差报告怎么写
2014/11/06 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL