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


相关文章
|
5月前
|
算法
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
|
3月前
|
人工智能
对10个数进行排序
对10个数进行排序。
22 1
|
4月前
|
存储 算法 Java
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
43 0
【剑指offer】-数字在排序数组中出现的次数-32/67
【剑指offer】-数字在排序数组中出现的次数-32/67
|
11月前
剑指offer_数组---数字在排序数组中出现的次数
剑指offer_数组---数字在排序数组中出现的次数
31 0
|
11月前
|
C++
剑指offer 55. 数字在排序数组中出现的次数
剑指offer 55. 数字在排序数组中出现的次数
58 0
|
11月前
|
算法 前端开发
前端算法-查找旋排序数组中最小值
前端算法-查找旋转排序数组中最小值
|
算法
算法练习——(8)用下标排序
问题:给你n个无序的int整型数组arr,并且这些整数的取值范围都在0-20之间,要你在 O(n) 的时间复杂度中把这 n 个数按照从小到大的顺序打印出来。
1、 在一个排序的二维数组中,查找某个整数
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
58 0
将数组a中的元素倒序输出
将数组a中的元素倒序输出
98 0
将数组a中的元素倒序输出