算法之快速排序和冒泡排序(js)
冒泡排序:遍历数组,每相邻两元素比较,根据大小替换,遍历完成后,数组内最后一个元素肯定是数组中最大的
function bubbleSort(arr){ for(var i=0;i<arr.length;i++){//第一层循环可以取到i值,由i值确定二级循环的length;数组排序完成时不一定是全部循环完成,中途可能就完成 for(var j=0;j<arr.length-i-1;j++){ //每一次循环结束的最后一项都是最大值,所以下一次循环就不需要再比较最后一项 if(arr[j]>arr[j+1]){ let temp = arr[j+1]; arr[j+1] = arr[j]; arr[j]=temp; } } } console.log(arr); }
快速排序:选择数组中一个元素作为基准值,然后遍历数组每一项与基准值比较,比其小的放进一个数组,比其大的放进另一个数组,然后再对这两个数组进行重复操作
let quickSort = (arr)=>{ //停止条件,这部分本应是最后写的,可以跳过之后再看 if(arr.length<2){ return false; return arr; } //定义一个基准值,理论上可以是数组中的任意值,但为了形象,取中间index的; let midIndex = Math.floor(arr.length/2); let midNum = arr[midIndex]; //定义两个数组,分别存放小于基准值及大于基准值的项 let leftAarr = [] ; let rightArr = [] ; //遍历数组,进行排序 for(var i = 0 ;i<arr.length ; i++){ if(arr[i]<midNum){ leftAarr.push(arr[i]) }else if(arr[i]>midNum){ rightAarr.push(arr[i]) } } //递归 return quickSort(leftAarr).concat(midNum,quickSort(rightArr));//写到此处要在函数中判断停止条件 }

浙公网安备 33010602011771号