zoukankan      html  css  js  c++  java
  • 输入一个有序数组和一个数,若在数组中返回索引,若不在返回应该插入的索引

    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);
  • 相关阅读:
    【搞笑】各种程序评测结果
    【UVA】P1510 Neon Sign
    【转载】实用:根号怎么打出来? <引自百度>
    【转载】C++中的模板template <typename T>
    * ! THUSC2017杜老师
    * ! THUSCH2017巧克力
    ! BJOI2019光线
    ! BJOI2019奥术神杖
    ! TJOI/HEOI2016字符串
    ! TJOI/HEOI2016求和
  • 原文地址:https://www.cnblogs.com/violinxliu/p/3778138.html
Copyright © 2011-2022 走看看