JS 实现快速排序
来源:互联网 发布:尚学堂java培训怎么样 编辑:程序博客网 时间:2024/06/07 04:45
今天写了一个快速排序
有点麻烦 感觉不是很清晰明了
但是方法分的 比较容易理解吧
大致思想:
随便找一个数作为基准 (我是用0位置的数作为基准),然后从右向左开始找比它小的数,如果找到就交换位置.
交换位置后,从左向右找比它大的数,找到就交换位置.假设在经过很多轮交换之后,找不到可以交换的位置了.
证明这个数左边的数,都比基准小,右边的数都比基准大,然后把 基准 左边的数组重新进行快速排序,
同样,右边的数组也进行快速排序,也就是重复上述步骤,一直到一个数组只含有一个元素,也就是长度为1,返回.
这样就排序完毕,可以得到最后的排序好的结果.
var shuzu = new Array(9,6,20,4,2,99,44,325,213,5,1,2,999);//快速排序 从小到大var kuaisu = function(arr,index){var aindex = index;var ahead = 0;var atail = arr.length-1;//递归调用 根据所选的位置分成两个数组 mid是 第一次选取 标记排完后,标记所在的位置var searchFirst = function(head,tail,index){if(head>=tail){return;}else{var mid = searchSmall(head,tail,index);searchFirst(head,mid-1,head);searchFirst(mid+1,tail,mid+1);}}//搜索右边比它小的 如果有就交换位置 再搜索交换位置之后左边比它大的 如果没有就返回这个位置var searchSmall =function(s,b,temp){//alert('small: '+s+' '+b+'temp:'+temp);for(var i = b;i>s;i--){if(arr[temp]>arr[i]){var k = arr[temp];arr[temp] = arr[i];arr[i] = k;return searchBig(s,i,i);}}return temp;}//搜索左边比它大的 如果有比它大的就交换位置 再搜索交换位置之后右边比它小的 如果没有就返回这个位置var searchBig = function(s,b,temp){//alert('big: '+s+' '+b+'temp:'+temp);for(var i = s;i<b;i++){if(arr[temp]<arr[i]){var k = arr[temp];arr[temp] = arr[i];arr[i] = k;return searchSmall(i,b,i);}}return temp;}searchFirst(ahead,atail,aindex);}kuaisu(shuzu,0);console.log(shuzu);
1 0
- JS实现快速排序
- js实现快速排序
- JS实现快速排序
- JS实现快速排序
- js实现快速排序
- JS 实现快速排序
- JS实现快速排序
- JS实现快速排序
- Js实现快速排序
- js实现快速排序
- 【算法】快速排序【JS实现】
- 快速排序-JS代码实现
- JS实现快速排序(QuickSort)
- js实现冒泡排序和快速排序
- 【算法】随机化快速排序【JS实现】
- JS快速排序法原理及实现
- 快速排序的js递归实现
- 冒泡排序, 简单选择排序, 插入排序, 希尔排序, 快速排序 js 实现
- Jupyter Notebook 快速入门(上)
- [NOIP2009][vijos1814]细胞分裂(数学相关)
- Java核心技术点之多线程
- 史上最详细的iOS之事件的传递和响应机制-原理篇
- IT公司面试经历的感悟
- JS 实现快速排序
- HTML笔记之一
- 产生三角波电路分析
- 史上最详细的iOS之事件的传递和响应机制-实践篇
- Ivy简介
- 免费直播编码软件应用技巧
- greenDAO学习心得,实现简单的CRUD
- JSTL标签
- TCP/IP协议学习(4)-IP选路、路由表