JS排序算法之快速排序
快速排序和归并排序都是采用二分法的排序算法。都是 Olog N
不过快速排序更复杂一些。
快递排序跟归并排序的区别是顺序,它是先总后分。
不断地从断点分,让左边的数都小于断点,右边都大于断点。然后迭代切分。
1 var group= [1,9,3,5,0,4,2,8]; 2 3 function swap (k,y,arr) { 4 var aux = arr[k]; 5 arr[k] = arr[y]; 6 arr[y]=aux; 7 8 }; 9 10 function quickSort(list) { 11 12 return quick(list,0,list.length-1); 13 14 } 15 16 function quick(array,left,right) {//主方法用来递归 和传递数组 17 if (array.length >1){ 18 var index = shear(array,left,right); 19 20 if(left<index-1){//返回位置的前面还有未排序的 21 quick(array,left,index-1); 22 } 23 if(right>index){//后面还有未排序的,递归 24 quick(array,index,right); 25 } 26 27 } 28 return array; 29 }; 30 function shear(array,left,right) { 31 var pivot = array[Math.floor((left+right)/2)]; 32 var nl = left; 33 var nr = right; 34 while(nl<=nr){ 35 while( array[nl] < pivot){ //找左边的比pivot更大的值 36 nl++; 37 } 38 while( array[nr] > pivot ){ //找右边的比pivot更小的值 39 nr--; 40 } 41 if(nl <= nr){//如果找到的两个数是左右的顺序,那么交换 42 swap(nl,nr,array); 43 nl++; 44 nr--; 45 } 46 47 } 48 return nl;//返回用来创建子数组的位置。该位置的左侧都是小于pivot的值,该位置及其右侧都是大于等于pivot的。 49 50 } 51 quickSort(group);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)