1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | function generateRandomArray(n,l,r) { arr = new Array(n); for (let i = 0; i<n;i++){ arr[i] = Math.floor(Math.random()*(r-l))+l; } return arr; } function fntime(fn) { let start = new Date().getTime(); // 开始时间 fn() let end = new Date().getTime(); // 结束时间 console.log(end - start+ "毫秒!" ); } var arr = []; function guibing() { _gui(arr,0,arr.length-1); } function _gui(arr,l,r) { if (l >= r){ return ; } let mid = Math.ceil((r+l)/2); _gui(arr,l,mid); _gui(arr,mid,r); _merge(arr,l,mid,r); console.log( "我是归并排序" +arr); } function _merge (arr,l,mid,r) { let aux = []; for (let i=l; i<=r; i++){ aux[i-l] = arr[i] } let i = l; let j = mid + 1; for (let k = l;k <= r; k++){ if (i>mid){ arr[k] = aux[j-l]; j++ } else if (j>r) { arr[k] = aux[i-l]; i++ } else if (aux[i-l]<aux[j-l]){ arr[k] = aux[i-l]; i++ } else { arr[k] = aux[j-l]; j++ } } } function main() { generateRandomArray(10,0,5000) fntime(guibing) } main() |