• 输入一个有序数组和一个数,若在数组中返回索引,若不在返回应该插入的索引


    js数组考题,题目如上:输入一个有序数组和一个数,若在数组中返回索引,若不在返回应该插入的索引

    我的答案如下:

     1         var arr = [1,2,4,5,7,9],
     2             cId = arr.length / 2,//中间索引
     3             cNum = Math.floor(arr[cId]);//中间数
     4         var _index = function(a,n){
     5             if(n >= a[a.length -1]){//判断最大值
     6                 n == a[a.length -1]? a[a.length -1] = n : a[a.length] = n;
     7                 return a.length - 1;
     8             } else if( n <= a[0]){//判断最小值
     9                 n == a[0]? a[0] = n : a.splice(0,0,n);
    10                 return 0;
    11             } else if(n >= cNum){//中间索引右侧
    12                 for(var i = cId,l = a.length; i < l; i ++){
    13                     if(a[i] == n){
    14                         return i;
    15                     }
    16                 }
    17             } else {//中间索引左侧
    18                 for(var i = 0,l = cId; i < l; i ++){
    19                     if(a[i] == n){
    20                         return i;
    21                     }
    22                 }
    23             }
    24         }
    25         function findIndex(a,n){// 目标数组 数字
    26             var m = _index(a,n);
    27             if(m || m === 0){//存在,返回索引 注意0
    28                 return m;
    29             } else {
    30                 if(n >= cNum){//中间右侧
    31                     for(var i = cId,l = a.length; i < l; i++){
    32                         if(a[i] > n){
    33                             a.splice(i,0,n);
    34                             return i;
    35                         }
    36                     }
    37                 } else {
    38                     for(var i = 0,l = cId; i < l; i++){
    39                         if(a[i] > n){
    40                             a.splice(i,0,n);
    41                             return i;
    42                         }
    43                     }
    44                 }
    45             }
    46         }
    47         var _d = findIndex(arr,2);
    48         document.write('索引是' + _d + ',新数组:' + arr);
  • 相关阅读:
    springboot + driud连接池踩的坑____新手学习
    tomcat的安装
    无限极分类
    javascript ECMAscript 和node.js commonJs之间的关系
    变量名,引用和地址
    java中闭包的理解
    thinkphp 模型的curd
    thinkphp之migration 迁移文件的使用
    验证ArrayList是线程不安全的集合
    一个java小程序,盗取插入的U盘中的数据。
  • 原文地址:https://www.cnblogs.com/violinxliu/p/3778138.html
Copyright © 2020-2023  润新知