这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
核心代码:
主要原理是快速排序的原理:找基准点、建立二个数组分别存储、递归
- 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,就返回这个传入的参数。
来源: http://www.phperz.com/article/17/0416/281874.html