JS实现快速排序(2种方法)
2017-06-29 20:49
681 查看
1、用i和j两个指针
2、用一个指针判断,大的放在右边,小的数放在左边
2、用一个指针判断,大的放在右边,小的数放在左边
<!DOCTYPE html> <html> <head> <title>quickSort</title> <meta charset="utf-8"/> <script type="text/javascript"> var arr=[12,20,5,16,15,1,30,45,23,9]; var start = 0; var end = arr.length; console.log('arr:' +arr); function quickSort(arr,low,high){ var key=arr[low]; var start=low; var end=high; while(end>start){ while(end>start&&arr[end]>=key) end--; if(arr[end]<=key){ var temp = arr[end]; arr[end]=arr[start]; arr[start] = temp; } while(end>start&&arr[start]<=key) start++; if(arr[start]>=key){ var temp = arr[start]; arr[start]=arr[end]; arr[end]=temp; } } if(start>low) quickSort(arr,low,start-1); if(end<high) quickSort(arr,end+1,high); } quickSort(arr,start,end); console.log('After arr:' +arr); </script> <script type="text/javascript"> function sort(elements){ if(elements.length<=1){ return elements; } var piIndex = Math.floor(elements.length/2);//取数组中间值 console.log(piIndex); var pi = elements.splice(piIndex,1)[0];//???在中间值的地方插入元素 var left = []; var right = []; for(var i =0;i<elements.length;i++){ if(elements[i]<pi){ left.push(elements[i]); } else { right.push(elements[i]); } } return sort(left).concat([pi],sort(right)); } var elements=[12,20,5,16,15,1,30,45,23,9]; document.write(sort(elements)); </script> </head> <body> </body> </html>
相关文章推荐
- js实现城市级联菜单的2种方法
- js实现数组去重的三个方法、数组的快速排序
- JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
- 通过js脚本复制网页上的一个表格的不错实现方法
- 仿服务器端脚本方式的JS模板实现方法
- js实现运行代码需要刷新的解决方法
- 使用js实现基于可视布局信息的网页噪音去除的测试方法
- 利用JS配合XMLHTTP方法实现多级联动的例子
- asp.net下利用JS实现对后台CS代码的调用方法
- 利用js方法实现html静态页面间参数传递
- 用asp实现无组件生成验证码的方法2种
- 动态生成js类的实现方法
- JS类中定义原型方法的两种实现的区别
- 仿服务器端脚本方式的JS模板实现方法
- Dom4j递归解析XML实现JS的getElementsByName类似方法
- CSDN上快速结贴的方法,JS实现
- 不用AJAX实现前台JS调用后台C#方法(小技巧) (转)
- 用js实现计算代码行数的简单方法附代码