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字典探测用户名工具
Oct 05 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
May 07 Javascript
jquery动态添加option示例
Dec 30 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
Oct 16 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
JavaScript实现Java中Map容器的方法
Oct 09 Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 Javascript
vue后台管理之动态加载路由的方法
Aug 13 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
Node.js实现断点续传
Jun 23 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
.htaccess文件保护实例讲解
2011/02/06 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
2018/05/15 NodeJs
vue脚手架搭建过程图解
2018/06/06 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
遍历python字典几种方法总结(推荐)
2016/09/11 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
web页面录屏实现
2019/02/12 HTML / CSS
《花瓣飘香》教学反思
2014/04/15 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
MySQL笔记 —SQL运算符
2022/01/18 MySQL