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 相关文章推荐
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
Jul 14 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
jQuery Form 页面表单提交的小例子
Nov 15 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
Apr 25 Javascript
jQuery Chosen通用初始化
Mar 07 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
Aug 11 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
Aug 20 Javascript
JavaScript生成随机验证码代码实例
Sep 28 Javascript
Vue Object 的变化侦测实现代码
Apr 15 Javascript
vue中实现图片压缩 file文件的方法
May 28 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中include与require使用方法区别详解
2013/10/19 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
js切换div css注意的细节
2012/12/10 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
Python模拟登录12306的方法
2014/12/30 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
小学教师师德整改措施
2014/09/29 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle