arr = [1,2,5,8,9,10,20,30,40] 有一个从小到大排序好的数组,现在输入一个数,要求按照原来的规律插入到数组中

简介: arr = [1,2,5,8,9,10,20,30,40] 有一个从小到大排序好的数组,现在输入一个数,要求按照原来的规律插入到数组中

arr = [1,2,5,8,9,10,20,30,40] 有一个从小到大排序好的数组,现在输入一个数,要求按照原来的规律插入到数组中


var arr = [1, 2, 5, 8, 9, 10, 20, 30, 40];
    var num = 15;
    var left = 0, right = arr.length - 1;
    while (left <= right) {
        var mid = Math.floor((left + right) / 2);
        if (arr[mid] === num) {
            arr.splice(mid, 0, num); break;
        } else if (arr[mid] < num) {
            left = mid + 1;
        } else { right = mid - 1; }
    } if (left > right) {
        arr.splice(left, 0, num);
    }
    console.log(arr);


这段代码的含义是:首先定义了一个已排序的数组arr和一个需要插入的数num。然后使用二分查找算法,找到num应该插入的位置。如果数组中已经存在num,则将num插入到第一个出现的位置。最后输出插入后的新数组。


具体实现是通过定义左右两个指针,每次将指针中间的位置mid与num进行比较,如果mid等于num,则在数组中插入num。如果mid小于num,则将左指针移动到mid+1的位置,如果mid大于num则将右指针移动到mid-1的位置。最后如果左指针大于右指针,则说明num应该插入到左指针的位置,然后使用splice方法将num插入到数组中。最后输出插入后的新数组。


相关文章
|
11月前
|
算法
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
|
6天前
将奇数数组与偶数数组合并为一个数组
【10月更文挑战第29天】将奇数数组与偶数数组合并为一个数组。
15 4
|
1月前
|
算法
巧用二维数组进行编号排序以及创建新数组排序编号和一个杨辉三角的实现
巧用二维数组进行编号排序以及创建新数组排序编号和一个杨辉三角的实现
53 1
|
1月前
|
机器学习/深度学习
对10个数进行排序
对10个数进行排序。
23 13
|
2月前
|
C语言 Python
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
148 4
|
6月前
58.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
58.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
36 0
【剑指offer】-数字在排序数组中出现的次数-32/67
【剑指offer】-数字在排序数组中出现的次数-32/67
剑指offer_数组---数字在排序数组中出现的次数
剑指offer_数组---数字在排序数组中出现的次数
43 0
|
C++
剑指offer 55. 数字在排序数组中出现的次数
剑指offer 55. 数字在排序数组中出现的次数
83 0
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置
56 2
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置