前言欢迎来到“前端进阶圈”公众号,一起探索学习前端技术……前端小菜鸟,分享的文章纯属个人观点,如有不妥不正确或有待讨论的地方欢迎评论,和同学一起学习~排序算法QuickSort原理Quicksorting每轮选择一个参考元素,将其他比参考元素大的元素移到第一个数组的传递,并且小于参考元素的元素元素被移动到序列的另一侧,从而将序列分成两部分。时间复杂度为:O(nlogn)每轮比较和交换,需要遍历数组的所有元素,时间复杂度为O(n)。这个遍历需要多少轮?如果元素个数为n,则平均需要logn轮。参考元素的选择参考元素:pivot,在分治过程中,以参考元素为中心,将他的元素向他的左右两边移动。可以随机选择一个元素作为参考元素,这样参考元素和数组的第一个元素可以互换。这样可以有效地将序列分成两部分,但是也有极小的几率会选择序列的最大值和最小值,从而影响分而治之的效果。时间复杂度为:O(nlogn),最坏情况为:O(n2)个元素的交换参考元素选好之后,下一步就是将比参考元素小的元素交换一次给参考元素,并将比参考元素大的元素替换到基本元素的另一侧。适用方法:双边循环法单边循环法双边循环法:选择一个参考元素,设置left和right两个指针指向最左边或最右边的两个元素。执行循环,从右指针开始,比较指针指向的元素和引用元素。如果大于或等于枢轴,指针将向右移动。如果它小于枢轴,则右指针将停止移动并切换到左指针。单边循环法单边循环法:先选择参考元素枢轴,同时设置一个标记指针指向数组的起始位置,这个标记指针代表比参考元素小的区域的边界。如果遍历的元素大于引用元素,则继续向后遍历。如果遍历的元素小于参考元素,将mark的指针向右移动一位,因为小于pivot的区域的边界增加了。二是将新遍历的元素和标记指针所在位置的元素交换位置。因为新遍历的元素属于比pivot小的区域。Array.prototype.quickSort=function(){//递归函数letrec=(arr)=>{//边界条件if(arr.length<=1)returnarr;//分区数组letleft=[];让对=[];//引用元素letmid=arr[0];//遍历for(leti=1;i
