a=[1,4,22,30,40,3,3,46];
function middle(Arr){
let value
let newArr = Arr.sort(function(a,b){return a-b})
console.log(Arr)
let len=newArr.length
console.log(len%2)
if(len%2===0){
value=(newArr[parseInt(len/2-1)]+newArr[len/2])/2
}else{
value=newArr[parseInt(len/2)]
}
console.log(value,newArr,parseInt(len/2))
return value
}
console.log(middle(a),'uu')
//递归法实现中位数的查找、
var a = [2, 10, 45, 65, 66];
var b = [1, 34, 45, 56, 56, 78, 87, 345, 456];
function BB(arr1, arr2) {
let alen = arr1.length;
let blen = arr2.length;
let kArr = alen > blen ? arr1 : arr2;
let targetArr = alen > blen ? arr2 : arr1;
var imin = 0, imax = alen, halfLen = parseInt((alen + blen + 1) / 2)
while (imin <= imax) {
var i = parseInt((imin + imax) / 2)
var j = halfLen - i
if (i < imax && arr2[j - 1] > arr1[i]) {
imin = i + 1
} else if (i > imin && arr1[i - 1] > arr2[j]) {
imax = i - 1
} else {
var maxLeft = 0;
if (i === 0) { maxLeft = arr2[j - 1]; }
else if (j === 0) { maxLeft = arr1[i - 1] }
else { maxLeft = arr1[i - 1] > arr2[j - 1] ? arr1[i - 1] : arr2[j - 1]; }
if ((alen + blen) % 2 === 1) {
return maxLeft
}
var minRight = 0
console.log(maxLeft, 'End--maxLeft')
if (i == alen) { minRight = arr2[j] }
else if (j == blen) { minRight = arr1[i] }
else {
cc = [arr2[j], arr1[i]]; minRight = arr2[j] > arr1[i] ? arr1[i] : arr2[j];
console.log(...cc, 'cc', minRight)
}
console.log(maxLeft, minRight, (maxLeft + minRight) / 2, '(maxLeft + minRight)/2')
return (maxLeft + minRight) / 2
}
}
}
BB(a, b)
二、插入排序
aa = [1, 34, 2, 4, 546, 6, 76];
function sortInsert(arr) {
atime = Date.now()
for (var i = 0, len = arr.length; i < len; i++) {
preIndex = i - 1;
current = arr[i]
// while(preIndex>=0&&arr[preIndex]>current){
// arr[preIndex+1]=arr[preIndex]
// preIndex--
// }
for (let j = i; j > 0; j--) {
if (arr[j - 1] > arr[j]) {
let tem = arr[j]
arr[j] = arr[j - 1]
arr[j - 1] = tem
}
}
if (preIndex + 1 != i) {
arr[preIndex + 1] = current
}
}
return arr
};
bb = sortInsert(aa)
btime = Date.now();
console.log(bb, btime, atime)
//VM1404:27 (7) [1, 2, 4, 6, 34, 76, 546] 1565070108205 1565070108205
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191021133253857.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDc2Njg4Mg==,size_16,color_FFFFFF,t_70)