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 相关文章推荐
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
May 13 Javascript
js分页代码分享
Apr 28 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
Jun 18 Javascript
AngularJS ng-repeat数组有重复值的解决方法
Oct 23 Javascript
浅谈AngularJs指令之scope属性详解
Oct 24 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
May 22 Javascript
Node.js 实现简单的接口服务器的实例代码
May 23 Javascript
详解jquery选择器的原理
Aug 01 jQuery
前端js中的事件循环eventloop机制详解
May 15 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
May 12 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 Javascript
Openlayers显示瓦片网格信息的方法
Sep 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
PHP 裁剪图片
2021/03/09 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
详解Python的Django框架中的中间件
2015/07/24 Python
Python实现DDos攻击实例详解
2019/02/02 Python
浅析使用Python搭建http服务器
2019/10/27 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
药剂学专业应届生自荐信
2013/09/29 职场文书
出纳岗位职责范本
2013/12/01 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
法律进企业活动方案
2014/03/04 职场文书
2014年外联部工作总结
2014/11/17 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
赢在中国观后感
2015/06/02 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
详解python字符串驻留技术
2021/05/21 Python
python基础学习之生成器与文件系统知识总结
2021/05/25 Python
实例详解Python的进程,线程和协程
2022/03/13 Python