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 import css实例代码
Jul 18 Javascript
用JavaScript编写COM组件的步骤
Mar 17 Javascript
window.parent与window.openner区别介绍
Apr 12 Javascript
jquery入门—选择器实现隔行变色实例代码
Jan 04 Javascript
javascript中的return和闭包函数浅析
Jun 06 Javascript
jquery.cookie.js使用指南
Jan 05 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
Jan 28 Javascript
JS获取子窗口中返回的数据实现方法
May 28 Javascript
vue结合axios与后端进行ajax交互的方法
Jul 06 Javascript
layui的select联动实现代码
Sep 28 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 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
WINXP下apache+php4+mysql
2006/11/25 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
JavaScript三元运算符的多种使用技巧
2015/04/16 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python抓取京东图书评论数据
2014/08/31 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
幼师求职自荐信范文
2014/01/26 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
《忆江南》教学反思
2014/04/07 职场文书
中学生操行评语
2014/04/24 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
刑事法律意见书
2015/06/04 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
Mysql 一主多从的部署
2022/05/20 MySQL
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android