核心代码:
复制代码 代码如下:
function quickSort(arr){
//如果数组只有一个数,就直接返回;
if(arr.length<1){
return arr;
}
//找到中间的那个数的索引值;如果是浮点数,就向下取整
var centerIndex = Math.floor(arr.length/2);
//根据这个中间的数的索引值,找到这个数的值;
var centerNum = arr.splice(centerIndex,1);
//存放左边的数
var arrLeft = [];
//存放右边的数
var arrRight = [];
for(i=0;i<arr.length;i++){
if(arr[i]<centerNum){
arrLeft.push(arr[i])
}else if(arr[i]>centerNum){
arrRight.push(arr[i])
}
}
return quickSort(arrLeft).concat(centerNum,quickSort(arrRight));
};
var arrSort = [33,18,2,40,16,63,27];
var arr1 = quickSort(arrSort);
console.log(arr1);
主要原理是:快速排序的原理:找基准点、建立二个数组分别存储、递归
基准点:就是找到这个数组中间的一个数;
建立二个数组分别存储:就是以这个基准点,将它的左右数值,分别存放到两个定义的新数组当中;
递归:在函数内部调用自身;
这里我总结的一点是在使用递归时:
1.必需要有一个判断,并且返回一个值;不然就是一个死循环了;
2.在内部调用自己的时候,传的参数是内部定义的某个变量,这个变量和初次传时来的参数,有关联;
3.要执行同样的工作,可以考虑用递归;
这是第一次执行函数的变量情况:中间数是40;根据循环里的判断条件小于40的存放在arrLeft,大于40的存放在arrRight里面。如下图
第二次调用函数
,当执行到 return quickSort(arrLeft).concat(centerNum,quickSort(arrRight));
quickSort(arrLeft)会去调用函数,传的参数是[33,18,2,16,27]
中间数是2,比2小的放左边arrLeft,比2大的放右边arrRight
最后再去调用quickSort(arrRight)
后面一样循环调用自己,直到传入的参数长度,小于1,就返回这个传入的参数。
相关推荐:
学习ExtJS TextField常用方法
javascript Math.random()随机数函数
asp.net 图片的读写入库实现代码
Javascript实现的CSS代码高亮显示
Ha0k 0.3 PHP 网页木马修改版
JS 实现双色表格实现代码
Nginx 简单的负载均衡配置示例
VBS 脚本不能运行 提示Windows无法访问指定设备路径或文件
php self,$this,const,static,-&gt;的使用
javascript 限制输入脚本大全
在js中单选框和复选框获取值的方式
dropdownlist之间的互相联动实现(显示与隐藏)
Excel导入Sqlserver数据库脚本
jquery.ui.draggable中文文档
cnblogs csdn 代码运行框实现代码
css 有弹动效果的网页导航
asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
睡五分钟等于六钟头的方法(熬夜站长必看)
JavaScript 组件之旅(四):测试 JavaScript 组件
444句英语口语常见语句 背下口语以后绝对不成问题了
Jquery 弹出层插件实现代码
JavaScript 基础知识 被自己遗忘的
asp.NET 脏字过滤算法 修改版
PHP 程序员的调试技术小结
文字瞬间从左到右切换显示的JavaScript代码
用户"sa"登陆失败 SQLServer 错误18456的解决方法
JS解析XML的实现代码
JavaScript 监听textarea中按键事件
颜色变换 像字符逐字输入的欢迎词
vbs 合并多个excel文件的脚本
jquery 弹出层实现代码
MySQL 转义字符使用说明
不安全的常用的js写法
js loading加载效果实现代码
学习ExtJS Panel常用方法
javascript实现拖拽并替换网页块元素
asp.net 读取并修改config文件实现代码
IIS6.0 silverlight网站部署方法
python 中文字符串的处理实现代码
sqlserver 日志恢复方法(搞定drop和truncate)
extjs 学习笔记(二) Ext.Element类
jquery pagination插件实现无刷新分页代码
基于innerHTML中的script广告实现代码[广告全部放在一个js里面] <font color=red>原创</font>
防止SQLSERVER的事件探查器跟踪软件
jquery 常用操作整理 基础入门篇
mySQL 延迟 查询主表
.NET 常用功能和代码小结
asp.net(c#)获取内容第一张图片地址的函数
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
asp 通用修改和增加函数代码