ith order statistic python에 대한 결정 론적 빠른 선택 (중앙값 접근 방식의 중앙값)

Pranjal Verma

dselectO (n) 시간에 정렬되지 않은 정수 (중복 없음)의 주어진 목록에서 i 번째 순서 통계를 찾아 퀵 정렬 원칙에 편승합니다. i 번째 순서 통계는 주어진 목록의 정렬 된 버전에서 i 번째로 작은 요소로 정의됩니다. 따라서 1 차 통계는 가장 작은 요소가되고 n 차 통계는 가장 큰 요소가됩니다.

실행에, 나는 수 IndexError: list index out of rangereturn arr[l]의 말에 dselect기능. 나는 오류가 나 하드 코딩으로 인해 발생 생각 l으로 0목록에있는 재귀 호출에 mediansdselect기능. (4 행)

이 오류를 방지하려면 어떻게해야합니까? l재귀 호출 에의 값을 어떻게 입력해야 합니까? 이것이이 오류의 원인일까요? 이것이 어리석은 질문이라면 자유롭게 지적하고이 질문을 삭제하겠습니다. 나는 이것에 대해 꽤 오랫동안 붙어 있기 때문에 이것을 물어야 만했습니다. 감사.

def dselect(arr, l, r, i):
    if l < r:
        #finding pivot deterministically
        medians = createMedianList(arr, l, r)
        pivot = dselect(medians, 0, len(medians) - 1, len(medians) // 2) #line4

        pivot = partition(arr, l, r, pivot)
        if pivot + 1 == i:
            return arr[pivot]
        elif pivot + 1 > i:
            return dselect(arr, l, pivot - 1, i)
        else:
            return dselect(arr, pivot + 1, r, i)

    return arr[l]

def partition(arr, l, r, pivot):
    pivotIndex, i = arr.index(pivot), l
    arr[l], arr[pivotIndex] = arr[pivotIndex], arr[l]

    for j in range(l + 1, r + 1):
        if arr[j] < arr[l]:
            i += 1
            arr[i], arr[j] = arr[j], arr[i]
    arr[l], arr[i] = arr[i], arr[l]

    return i

def createMedianList(arr, l, r):
    medians = []
    for i in range(l, (r + 1) - 5 + 1):
        temp = sorted(arr[i:i + min(5, (r - l + 1) - i)])
        medians.append(temp[len(temp) // 2])

    return medians

if __name__ == '__main__':
    arr = [5, 2, 4, 3, 1, -1]
    #arr = list(map(int, open('select.txt').read().splitlines()))
    print(dselect(arr, 0, len(arr) - 1, int(input('Which order 
    statistic to find? '))))
supinf

문제는 createMedianList때때로 빈 목록을 반환한다는 l >= r-3것입니다. 이것은 결국 발생할 경우 발생합니다. createMedianList빈 목록을 반환하지 않도록 에 무언가를 추가하는 것이 좋습니다 . 예 : if medians==[]:medians=[arr[0]]또는 유사한 것 (중위수에 대해 원하는 속성에 따라 다름).

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

중앙값에 대한 데이터 선택

분류에서Dev

각 그룹에 대해 일부 행의 중앙값을 다른 행의 중앙값으로 나눕니다.

분류에서Dev

중앙값 기반 특정 열 값 선택을 사용하여 값을 대치하는 Python

분류에서Dev

nil 값에 대한 신속한 올바른 접근 방식

분류에서Dev

페이지 중앙에 다른 콘텐츠를로드하는 왼쪽 메뉴의 일반적인 접근 방식

분류에서Dev

gnuplot-다이어그램의 오른쪽에 중앙값에 대한 레이블 추가

분류에서Dev

플롯의 중앙값을 선으로 연결

분류에서Dev

자바의 중앙값과 제곱근

분류에서Dev

스칼라 값 클래스에 대한 관용적 접근 방식

분류에서Dev

빠른 정렬 알고리즘-중앙값 3

분류에서Dev

Python에서 목록의 중앙값

분류에서Dev

중앙값의 합 (더 빠른 솔루션)

분류에서Dev

C ++ 중앙값에 대한 정답을 얻을 수 없습니다.

분류에서Dev

SQL Server 2012에서 한 쿼리의 평균 및 중앙값

분류에서Dev

퀵 정렬에서 3의 중앙값 (평균)?

분류에서Dev

ggplot의 통계적 차이 중앙값

분류에서Dev

최적의 중앙값 함수

분류에서Dev

여러 다른 값 목록에 대한 근접성을 기반으로 조건부 서식 적용

분류에서Dev

일련의 이미지에 대한 픽셀 단위 중앙값 찾기

분류에서Dev

Pandas는 열에 대한 그룹의 중앙값을 계산합니다.

분류에서Dev

2-y 축 산점도 [R]에서 단측 반복 측정 검정에 대한 중앙값 추세선 및 p- 값 추가

분류에서Dev

make 시작시 변수 재정의에 대한 다른 접근 방식

분류에서Dev

Python 3.4, 목록의 중앙값 찾기

분류에서Dev

matplotlib의 Scatter는 해당 X 축 값 위 대신 차트 중앙에 점의 수직선을 표시합니다.

분류에서Dev

중앙에 접근하는 더 작은 값으로 행렬 생성

분류에서Dev

그룹의 SQLITE에서 중앙값

분류에서Dev

셀 값 중 하나가 다른 미리 정의 된 값에 최대한 가까운 데이터 프레임에서 행을 선택하는 방법

분류에서Dev

WinForms의 ComboBox에서 선택한 항목을 중앙 정렬하는 방법은 무엇입니까?

분류에서Dev

pROC 중앙값 민감도 대 수동 민감도 계산-다른 결과

Related 관련 기사

  1. 1

    중앙값에 대한 데이터 선택

  2. 2

    각 그룹에 대해 일부 행의 중앙값을 다른 행의 중앙값으로 나눕니다.

  3. 3

    중앙값 기반 특정 열 값 선택을 사용하여 값을 대치하는 Python

  4. 4

    nil 값에 대한 신속한 올바른 접근 방식

  5. 5

    페이지 중앙에 다른 콘텐츠를로드하는 왼쪽 메뉴의 일반적인 접근 방식

  6. 6

    gnuplot-다이어그램의 오른쪽에 중앙값에 대한 레이블 추가

  7. 7

    플롯의 중앙값을 선으로 연결

  8. 8

    자바의 중앙값과 제곱근

  9. 9

    스칼라 값 클래스에 대한 관용적 접근 방식

  10. 10

    빠른 정렬 알고리즘-중앙값 3

  11. 11

    Python에서 목록의 중앙값

  12. 12

    중앙값의 합 (더 빠른 솔루션)

  13. 13

    C ++ 중앙값에 대한 정답을 얻을 수 없습니다.

  14. 14

    SQL Server 2012에서 한 쿼리의 평균 및 중앙값

  15. 15

    퀵 정렬에서 3의 중앙값 (평균)?

  16. 16

    ggplot의 통계적 차이 중앙값

  17. 17

    최적의 중앙값 함수

  18. 18

    여러 다른 값 목록에 대한 근접성을 기반으로 조건부 서식 적용

  19. 19

    일련의 이미지에 대한 픽셀 단위 중앙값 찾기

  20. 20

    Pandas는 열에 대한 그룹의 중앙값을 계산합니다.

  21. 21

    2-y 축 산점도 [R]에서 단측 반복 측정 검정에 대한 중앙값 추세선 및 p- 값 추가

  22. 22

    make 시작시 변수 재정의에 대한 다른 접근 방식

  23. 23

    Python 3.4, 목록의 중앙값 찾기

  24. 24

    matplotlib의 Scatter는 해당 X 축 값 위 대신 차트 중앙에 점의 수직선을 표시합니다.

  25. 25

    중앙에 접근하는 더 작은 값으로 행렬 생성

  26. 26

    그룹의 SQLITE에서 중앙값

  27. 27

    셀 값 중 하나가 다른 미리 정의 된 값에 최대한 가까운 데이터 프레임에서 행을 선택하는 방법

  28. 28

    WinForms의 ComboBox에서 선택한 항목을 중앙 정렬하는 방법은 무엇입니까?

  29. 29

    pROC 중앙값 민감도 대 수동 민감도 계산-다른 결과

뜨겁다태그

보관