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 相关文章推荐
JQuery 常用方法和事件详细介绍
Apr 18 Javascript
jquery实现背景墙聚光灯效果示例分享
Mar 02 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
May 23 Javascript
jquery文字填写自动高度的实现方法
Nov 07 Javascript
原生js实现日期计算器功能
Feb 17 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
Mar 15 Javascript
JS中正则表达式全局匹配模式 /g用法详解
Apr 01 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
Vue源码解读之Component组件注册的实现
Aug 24 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
一个小时快速搭建微信小程序的方法步骤
Apr 15 Javascript
代码解析React中setState同步和异步问题
Jun 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
PHP读书笔记_运算符详解
2016/07/01 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
python del()函数用法
2013/03/24 Python
python实现保存网页到本地示例
2014/03/16 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
中学教师请假制度
2014/02/03 职场文书
校长创先争优承诺书
2014/08/30 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
大学生见习报告总结
2014/11/04 职场文书
课外活动实习计划
2015/01/19 职场文书
法律讲堂观后感
2015/06/11 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
SSM VUE Axios详解
2021/10/05 Vue.js
js中Object.create实例用法详解
2021/10/05 Javascript
Nginx内网单机反向代理的实现
2021/11/07 Servers