2 차원 배열의 두 번째 요소에 대한 루비 보간 검색

베냐민

아래에있는 것은 1 차원 배열에 대한 간단한 보간 검색입니다 $employee_list. 이 목록은 퇴직으로 인해 공백이있을 수있는 직원의 ID 목록입니다.

def exist?(id)
  lower = 0
  upper = $employee_list.length - 1
  while $employee_list[upper] != $employee_list[lower] && id >= $employee_list[lower] && id <= $employee_list[upper]
      middle = lower + ((id - $employee_list[lower]) * (upper - lower) / ($employee_list[upper] - $employee_list[lower]))
      if id > $employee_list[middle]
        lower = middle + 1
      elsif id < $employee_list[middle]
        upper = middle - 1
      else
        return true
      end
    end
  return false
end

이제 목록에 새 요소를 추가하고 배열의 두 번째 요소에는 직원 출생 연도 (예 :)가 포함됩니다 $employee_list[id][birthyear]. 출생 연도를 기준으로 배열을 정렬 할 수 있으며 출생 연도를 기준으로 보간 검색을 수행하고 특정 출생 연도를 가진 직원 ID 목록을 반환하고 싶습니다.

에릭 두미 닐

다음은 수정 된 버전입니다. 주어진 연도의 직원이 발견되고 직원이 발견되지 않은 경우 하나를 반환합니다 .idnil

1 년 동안 여러 개의 ID를 반환해야하는 경우 수정 된 버전의 보간 검색이 필요합니다. 마지막으로 보간 검색은 균일하게 분포 된 값에서 가장 잘 작동합니다. 직원의 출생 연도는 그렇지 않은 것 같습니다.

def find_id_for_year(array, year)
  lower = 0
  upper = array.length - 1
  while array[upper][1] != array[lower][1] && year >= array[lower][1]  && year <= array[upper][1]
    middle = lower + ((year - array[lower][1]) * (upper - lower) / (array[upper][1] - array[lower][1]))
    if year > array[middle][1]
      lower = middle + 1
    elsif year < array[middle][1]
      upper = middle - 1
    else
      return array[middle][0]
    end
  end
end

employee_list = Array.new(10) {|i| [i, rand(1990..2000)] }.sort_by(&:last)

p employee_list
#=> [[5, 1990], [8, 1990], [2, 1991], [9, 1991], [7, 1992], [0, 1995], [6, 1996], [4, 1998], [1, 1999], [3, 1999]]
#=> [[8, 1990], [4, 1991], [5, 1991], [6, 1991], [2, 1996], [0, 1998], [1, 1998], [3, 1998], [7, 1999], [9, 2000]]

p find_id_for_year(employee_list, 1992)
#=> 7
#=> nil

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

두 번째 배열 (2 차원 배열)에 대한 txt 파일

분류에서Dev

파이썬에서 2 차원 사전의 고유 키 (두 번째 차원)를 검색합니까?

분류에서Dev

2 차원 배열의 루비 배열, 검색 / 조회?

분류에서Dev

Ruby : 차원 배열에서 첫 번째, 두 번째,이 등의 요소 일치

분류에서Dev

2 차원 배열에 대한 배열 검색 경고

분류에서Dev

2 차원 배열의 배열을 첫 번째 차원으로 정렬 한 다음 두 번째 차원으로 정렬

분류에서Dev

Numpy의 두 번째 차원에 대한 내적?

분류에서Dev

배열 루비에서 배열의 두 번째 요소를 얻는 방법

분류에서Dev

첫 번째 요소에 대한 포인터를 통해 2 차원 배열에 액세스

분류에서Dev

다른 2D 배열의 2 차원 배열에서 두 열 요소의 대응 관계 찾기

분류에서Dev

2D 배열의 첫 번째 열의 모든 두 번째 열에 대한 값 삽입

분류에서Dev

한 차원에서 두 개의 2 차원 배열의 교차점

분류에서Dev

한 번에 두 행을 비교하는 두 번째 열의 최대 및 첫 번째 열의 최소

분류에서Dev

2 차원 배열에서 요소 검색

분류에서Dev

두 번째 항목의 행에 대한 Scala 2D 배열 작업

분류에서Dev

한 번에 배열의 두 요소로 루프

분류에서Dev

루비에서 배열의 두 번째 열의 최대 및 합계를 얻는 방법

분류에서Dev

2D 배열을 두 번째 큰 배열의 중간에 복사

분류에서Dev

첫 번째 벡터의 각 비결 측 요소에 대해 두 번째 벡터의 후행 요소와 비교

분류에서Dev

크롬에서, div 내부 요소의 너비가 위의 두 번째 원 푸시보다 100 %이면

분류에서Dev

배열 1의 첫 번째 요소, 배열 2의 첫 번째 요소, 배열 1의 두 번째 요소, 배열 2의 두 번째 요소 등에서 파이썬 배열을 만듭니다.

분류에서Dev

2 차원 배열의 각 행의 첫번째 요소를 감산

분류에서Dev

한 열에서 두 번째 열로 하나의 값 교차 검증

분류에서Dev

두 배열의 유사한 요소에 대한 마스크를 가져 와서 세 번째 배열에 적용

분류에서Dev

두 번째 차원이 비어있는 numpy 배열

분류에서Dev

두 개의 numpy 배열에서 요소 간의 최소 절대 차이

분류에서Dev

MVC의 PagedList.MVC에서 두 번째 페이지 요청에 대한 검색 모델이 지워집니다.

분류에서Dev

두 개의 간단한 배열에서 다차원 배열 만들기

분류에서Dev

두 개의 간단한 배열에서 다차원 배열 만들기

Related 관련 기사

  1. 1

    두 번째 배열 (2 차원 배열)에 대한 txt 파일

  2. 2

    파이썬에서 2 차원 사전의 고유 키 (두 번째 차원)를 검색합니까?

  3. 3

    2 차원 배열의 루비 배열, 검색 / 조회?

  4. 4

    Ruby : 차원 배열에서 첫 번째, 두 번째,이 등의 요소 일치

  5. 5

    2 차원 배열에 대한 배열 검색 경고

  6. 6

    2 차원 배열의 배열을 첫 번째 차원으로 정렬 한 다음 두 번째 차원으로 정렬

  7. 7

    Numpy의 두 번째 차원에 대한 내적?

  8. 8

    배열 루비에서 배열의 두 번째 요소를 얻는 방법

  9. 9

    첫 번째 요소에 대한 포인터를 통해 2 차원 배열에 액세스

  10. 10

    다른 2D 배열의 2 차원 배열에서 두 열 요소의 대응 관계 찾기

  11. 11

    2D 배열의 첫 번째 열의 모든 두 번째 열에 대한 값 삽입

  12. 12

    한 차원에서 두 개의 2 차원 배열의 교차점

  13. 13

    한 번에 두 행을 비교하는 두 번째 열의 최대 및 첫 번째 열의 최소

  14. 14

    2 차원 배열에서 요소 검색

  15. 15

    두 번째 항목의 행에 대한 Scala 2D 배열 작업

  16. 16

    한 번에 배열의 두 요소로 루프

  17. 17

    루비에서 배열의 두 번째 열의 최대 및 합계를 얻는 방법

  18. 18

    2D 배열을 두 번째 큰 배열의 중간에 복사

  19. 19

    첫 번째 벡터의 각 비결 측 요소에 대해 두 번째 벡터의 후행 요소와 비교

  20. 20

    크롬에서, div 내부 요소의 너비가 위의 두 번째 원 푸시보다 100 %이면

  21. 21

    배열 1의 첫 번째 요소, 배열 2의 첫 번째 요소, 배열 1의 두 번째 요소, 배열 2의 두 번째 요소 등에서 파이썬 배열을 만듭니다.

  22. 22

    2 차원 배열의 각 행의 첫번째 요소를 감산

  23. 23

    한 열에서 두 번째 열로 하나의 값 교차 검증

  24. 24

    두 배열의 유사한 요소에 대한 마스크를 가져 와서 세 번째 배열에 적용

  25. 25

    두 번째 차원이 비어있는 numpy 배열

  26. 26

    두 개의 numpy 배열에서 요소 간의 최소 절대 차이

  27. 27

    MVC의 PagedList.MVC에서 두 번째 페이지 요청에 대한 검색 모델이 지워집니다.

  28. 28

    두 개의 간단한 배열에서 다차원 배열 만들기

  29. 29

    두 개의 간단한 배열에서 다차원 배열 만들기

뜨겁다태그

보관