如题:letresult=[{lxid:{name:'20路'}},{lzbd:{name:'5路'}},{ldfx:{name:'107路'}},{lwes:{name:'301路'}}]希望得到这样的结果:letresult=[{lxid:{name:'5路'}},{lzbd:{name:'20路'}},{ldfx:{name:'107路'}},{lwes:{name:'301路'}}]
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
快速排序算法:functionquickSort(arr){varnewArr=[];if(arr.length<2){returnarr;}else{varstandIndex=Math.floor(arr.length/2);varstandNum,standNumObj=arr.splice(standIndex,1);for(letkeyinstandNumObj){for(let_keyinstandNumObj[key]){standNum=standNumObj[key][_key].name;}}standNum=Number(standNum.slice(0,standNum.search('路')))varminArr=[],maxArr=[];for(vari=0,len=arr.length;ifor(letkeyinarr[i]){ for(let_keyinarr[i][key]){let_num=arr[i][key][_key];if(Number(_num.slice(0,_num.search('路')))minArr.push(arr[i]); }else{maxArr.push(arr[i]);}}}}newArr=quickSort(minArr).concat(standNumObj,quickSort(maxArr));}returnnewArr;}这里是基于将对象当中的数字截取出来,比较大小进行快排的,快排的原理就是选择一个基准值,也就是以上代码所定义的standNum。然后比较基准值的两边,添加到最小数组或者最大数组中,最后递归合并这些数组。我是根据我总结的文章算法入门中的快速排序算法来扩展的。在算法当中,选择中间值作为基准值的快速排序算法是最快的。
添加回答
举报
0/150
提交
取消