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插入到数组中。最后输出插入后的新数组。


目录
打赏
0
0
0
0
2
分享
相关文章
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置
70 2
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置
随机生成一个short型一维数组,从控制台输入一个数值,遍历数组查找,如果找到了,打印出该数在数组中的位置,如果没有查到,请将该数值插入并形成新的数组(要求降序)
随机生成一个short型一维数组,从控制台输入一个数值,遍历数组查找,如果找到了,打印出该数在数组中的位置,如果没有查到,请将该数值插入并形成新的数组(要求降序)
169 0
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
|
10月前
44.从键盘输入12个数存入二维数组a[3][4]中,编写程序求出最大元素的值及它所在的行号和列号
44.从键盘输入12个数存入二维数组a[3][4]中,编写程序求出最大元素的值及它所在的行号和列号
129 0
数组奇数排序
数组奇数排序
95 0
1、 在一个排序的二维数组中,查找某个整数
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
108 0
剑指offer_数组---数字在排序数组中出现的次数
剑指offer_数组---数字在排序数组中出现的次数
52 0
|
10月前
58.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
58.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
49 0
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
369 4
将数组a中的元素倒序输出
将数组a中的元素倒序输出
142 0
将数组a中的元素倒序输出

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等