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一组验证函数
Dec 20 Javascript
JS实现关键字搜索时的相关下拉字段效果
Aug 05 Javascript
jquery制作LED 时钟特效
Feb 01 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
jQuery基于muipicker实现仿ios时间选择
Feb 22 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
详解JavaScript中的强制类型转换
Apr 15 Javascript
使用 Element UI Table 的 slot-scope方法
Oct 10 Javascript
JS使用正则表达式提交页面验证的代码
Oct 16 Javascript
ckeditor一键排版功能实现方法分析
Feb 06 Javascript
vue项目中使用vue-layer弹框插件的方法
Mar 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
Sony CFR 320 修复改造
2020/03/14 无线电
PHP If Else(elsefi) 语句
2013/04/07 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
vue实现页面加载动画效果
2017/09/19 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
JS开发自己的类库实例分析
2019/08/28 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python实现的石头剪子布代码分享
2014/08/22 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
python实现手机通讯录搜索功能
2018/02/22 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
送餐员岗位职责范本
2014/02/21 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
党校毕业个人总结
2015/02/28 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android