题目:在一个已经排序好的数组中插入一个值, [1,4,6,9,12] 10
分析:要想插入这个值,就需要找到这个值应该插入在哪个位置。也可以采用冒泡,来比较相邻的数。关于这个值的位置还需要具体分析是插入在数组的前面、中间、还是后面。
方法一:通过比较与之相邻数的大小插入该数
function insert(arr, n) {
//此时n可能在前面,中间,后面插入
if (n < arr[0]) {
arr.unshift(n);
} else if (n > arr[arr.length - 1]) {
arr.push(n);
} else {
for (var i = 0; i < arr.length - 1; i++) {
if (n >= arr[i] && n <= arr[i + 1]) {
arr.splice(i + 1, 0, n);
break;
}
}
}
return arr;
}
console.log(insert([1, 4, 6, 9, 12], 10)); //[1, 4, 6, 9, 10, 12]
方法二:通过找位置从而在指定位置插入该数
function insert(arr, n) {
//先令位置在最前面
var index = 0;
//判断,找位置插入 可能在数组前面,中间,后面插入
if (n < arr[0]) {
index = 0 ;
} else if (n > arr[arr.length - 1]) {
index = arr.length ;
} else {
for (var i = 0; i < arr.length - 1 ; i++) {
if (n >= arr[i] && n <= arr[i + 1]) {
index = i + 1;
}
}
}
arr.splice(index, 0, n);
return arr ;
}
console.log(insert([1, 4, 6, 9, 12], 10)); //[1, 4, 6, 9, 10, 12]