Advertisement
vit134

IndexOf для массива

Nov 15th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Написать функцию indexOf для массива
  3. */
  4.  
  5. // O(n)
  6. function indexOf(arr, target) {
  7.     let res = -1;
  8.    
  9.     for (var i = 0; i < arr.length; i++) {
  10.         if (arr[i] === target) res = i;
  11.     }
  12.    
  13.     console.log(res);
  14. }
  15.  
  16. indexOf([1, 2, 3], 1) // 0
  17. indexOf([1, 2, 3], 4) // -1
  18.  
  19. // O(log(n))
  20. function indexOf(arr, target) {
  21.     let start = 0;
  22.     let end = arr.length;
  23.    
  24.     function check(i) {
  25.         return i >= 0 && i < arr.length && arr[i] === target;
  26.     }
  27.    
  28.     while(end - start > 1) {
  29.         let mid = start + Math.floor((end - start) / 2);
  30.         if (check(mid)) {
  31.             return mid;
  32.         } else if (target > arr[mid]) {
  33.             start = mid;
  34.         } else {
  35.             end = mid;
  36.         }
  37.     }
  38.    
  39.     if (arr[start] === target) {
  40.         return start
  41.     }
  42.    
  43.     return -1
  44. }
  45.  
  46.  
  47. console.log(indexOf([1, 2, 3], 1)) // 0
  48. console.log(indexOf([1, 2, 3], 4)) // -1
  49. console.log(indexOf([1, 2, 3, 4, 5, 6, 7, 8], 8)) // 7
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement