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 相关文章推荐
在线游戏大家来找茬II
Sep 30 Javascript
IE浏览器兼容Firefox的JS脚本的代码
Oct 23 Javascript
html数组字符串拼接的最快方法
Sep 16 Javascript
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
javascript使用location.search的示例
Nov 05 Javascript
详解Bootstrap各式各样的按钮(推荐)
Dec 13 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
Mar 17 Javascript
详解vue 配合vue-resource调用接口获取数据
Jun 22 Javascript
js 监控iframe URL的变化实例代码
Jul 12 Javascript
Vue 重置组件到初始状态的方法示例
Oct 10 Javascript
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
vue-cli脚手架的.babelrc文件用法说明
Sep 11 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
Zerg建筑一览
2020/03/14 星际争霸
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
理解javascript异步编程
2016/01/27 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
JS实现图片手风琴效果
2020/04/17 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
python:print格式化输出到文件的实例
2018/05/14 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
Python中作用域的深入讲解
2018/12/10 Python
使用pip安装python库的多种方式
2019/07/31 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
小学生安全责任书
2014/07/25 职场文书
法定代表人授权委托书
2014/09/19 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers