标签:sof 理解 分支 java orm soft 分治 col sid
function bubleSort(arr) { var len = arr.length; for (let i=0 ; i<len-1; i++) { for(let j = 0; j <=len- i - 1; j++) { if(arr[j] > arr[j + 1]) { [arr[j],arr[j+1]] = [arr[j+1],arr[j]] } } } return arr; }
function selectSort(arr) { var len = arr.length; for(let i = 0 ;i < len - 1; i++) { for(let j = i ; j<len; j++) { if(arr[j] < arr[i]) { [arr[i],arr[j]] = [arr[j],arr[i]]; } } } return arr }
function insertSort(arr) { for(let i = 1; i < arr.length; i++) { //外循环从1开始,默认arr[0]是有序段 for(let j = i; j > 0; j--) { //j = i,将arr[j]依次插入有序段中 if(arr[j] < arr[j-1]) { [arr[j],arr[j-1]] = [arr[j-1],arr[j]]; } else { break; } } } return arr; }
function quickSort(arr) { if(arr.length <= 1) { return arr; //递归出口 } var left = [], right = [], current = arr.splice(0,1); for(let i = 0; i < arr.length; i++) { if(arr[i] < current) { left.push(arr[i]) //放在左边 } else { right.push(arr[i]) //放在右边 } } return quickSort(left).concat(current,quickSort(right)); }
function quickSort(a) { return a.length <= 1 ? a : quickSort(a.slice(1).filter(item => item <= a[0])).concat(a[0], quickSort(a.slice(1).filter(item => item > a[0]))); } //slice是返回start-end选定的子数组,不修改原数组
function shellSort(arr) { for(let gap = Math.floor(arr.length/2); gap > 0; gap = Math.floor(gap/2)) { // 内层循环与插入排序的写法基本一致,只是每次移动的步长变为 gap,而不是 1: for(let i = gap; i < arr.length; i++) { let j = i; let temp = arr[j]; for(; j> 0; j -= gap) { if(temp >= arr[j-gap]) { break; } arr[j] = arr[j-gap]; } arr[j] = temp; } } return arr; }
标签:sof 理解 分支 java orm soft 分治 col sid
原文地址:https://www.cnblogs.com/Joe-and-Joan/p/10677751.html