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 Timer实现代码
Feb 17 Javascript
jQuery 拖动层(在可视区域范围内)
May 24 Javascript
js判断鼠标同时离开两个div的思路及代码
May 31 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
简单的Jquery全选功能
Nov 07 Javascript
jquery实现背景墙聚光灯效果示例分享
Mar 02 Javascript
第一篇初识bootstrap
Jun 21 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
学习vue.js计算属性
Dec 03 Javascript
基于vue2的table分页组件实现方法
Mar 20 Javascript
JavaScript ES6中的简写语法总结与使用技巧
Dec 30 Javascript
如何在node环境实现“get数据解析”代码实例
Jul 03 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
Python中文件的读取和写入操作
2018/04/27 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
django中的图片验证码功能
2019/09/18 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
社团2014年植树节活动总结
2014/03/11 职场文书
参观接待方案
2014/03/17 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
优质服务演讲稿
2014/05/14 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
2014年节能工作总结
2014/12/18 职场文书
在校证明模板
2015/06/17 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js