当前位置: 首页 > Web前端 > JavaScript

排序算法

时间:2023-03-27 13:56:45 JavaScript

排序算法本文讲解了冒泡排序、快速排序、归并排序三种排序算法的思想和编码冒泡排序的思想:依次比较两个相邻的数,较小的数放在前面,比较大的数字放在后面。直到一次运行完成,此时,最大的数放在最后的位置,排序后应该在的位置。依次类推,然后将第二大的数冒泡到倒数第二个位置,运行i次,将所有i个数都放到指定的位置,排序完成。functionbubbleSort(arr){constlen=arr.length;for(leti=0;iarr[j]){[arr[j-1],arr[j]]=[arr[j],arr[j-1]];}}}returnarr;}快速排序思路:设置一个截断值,通过截断值将数组分成左右两部分,小的放在左边,大的放在右边。  跑完一次后,cutoff值就在应该的位置了(因为左边的比它小,右边的比它大),split的两端继续按照到这个逻辑(递归)。functionquickSort(arr){constsort=(L,R)=>{如果(L>=R)返回;让l=L;让r=R;//选择一个参考值,比它小的放在左边,比它大的放在右边//分裂后两端继续这样做constpivot=arr[l];while(lpivot)r--;如果(l{让sortValue=[];令i=0,j=0;while(isortV2[j]){sortValue.push(sortV2[j]);j++;}else{sortValue.push(sortV1[i]);我++;}}if(i{if(arr.length===1)returnarr;让mid=Math.floor(arr.length/2);让v1=arr.slice(0,mid);让v2??=arr.slice(mid,arr.length);constsortV1=排序(v1);constsortV2=排序(v2);返回合并(sortV1,sortV2);};返回排序(arr);}