js---数组排序法(冒泡排序;快速排序)
1.冒泡排序
原理:将数组的相邻两个元素进行比较,大的就往后移,小的往前,依次比较并且进行递减迭代。
var arr =[54,36,89,1,3,5,2]; function sortArr(arr){ if(arr&&arr.length>0){ for(let i=0;i<arr.length;i++){ for(let j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ let temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; //变量的解构赋值 /* [arr[j],arr[j+1]]=[arr[j+1],arr[j]] */ } } } } return arr; } sortArr(arr);
3.快速排序法
原理:选择一个基准点,一般选折为Math.floor(arr.length/2)为基准点;再把每个元素和基准点进行比较,形成两个子集,反复比较,直到所有元素只剩下 一个位置。
function quickSort(arr){ if(arr.length<=1){ return arr; } let centerIndex = Math.floor(arr.length/2); let centerValue = arr.splice(centerIndex,1)[0]; let left = [],right = []; for(let i =0;i<arr.length;i++){ if(arr[i]<centerValue){ left.push(arr[i]) }else{ right.push(arr[i]) } } return quickSort(left).concat([centerValue],quickSort(right)) } quickSort(arr)