별의 공부 블로그 🧑🏻‍💻
728x90
728x170

1차원/2차원 배열의 중앙값 계산하기

들어가며

  • 이용하여 1차원 또는 2차원 배열의 중앙값을 계산해보자.
  • 2차원 배열의 경우, 1차원 배열로 만든 후, 정렬하는 방법을 사용한다.

 

중앙값(Median)

  • 데이터를 일렬로 정렬해서 나열한 후, 나열된 숫자의 가운데에 위치하는 값을 대푯값으로 하는 방법
  • 중앙값을 구하려면 우선 데이터를 오름차순 또는 내림차순으로 정렬해야 한다.
  • 데이터의 개수가 짝수 개인 경우, 중앙값을 (개수/2) 또는 (개수/2 - 1) 어느 것을 해도 된다.

 

프로그램 구현 ① : 1차원 배열의 중앙값 계산하기

  • 선택 정렬(Selection Sort)을 이용하여 중앙값을 계산해본다.
def selectionSort(ary) :
    n = len(ary)
    for i in range(0, n-1) :
        minIdx = i
        for k in range(i+1, n) :
            if (ary[minIdx] > ary[k]) :
                minIdx = k
        tmp = ary[i]
        ary[i] = ary[minIdx]
        ary[minIdx] = tmp

    return ary

moneyAry = [7, 5, 11, 6, 9, 80000, 10, 6, 15, 12]

print('정렬 전 -->', moneyAry)
moneyAry = selectionSort(moneyAry)
print('정렬 후 -->', moneyAry)
print('중앙값 --> ', moneyAry[len(moneyAry)//2])
더보기
정렬 전 --> [7, 5, 11, 6, 9, 80000, 10, 6, 15, 12]
정렬 후 --> [5, 6, 6, 7, 9, 10, 11, 12, 15, 80000]
중앙값 -->  10

 

프로그램 구현 ② : 2차원 배열의 중앙값 계산하기

  • 선택 정렬(Selection Sort)을 이용하여 중앙값을 계산해본다.
  • 2차원 배열을 1차원 배열로 만든 후, 정렬하는 방법을 사용한다.
def selectionSort(ary) :
    n = len(ary)
    for i in range(0, n-1) :
        minIdx = i
        for k in range(i+1, n) :
            if (ary[minIdx] > ary[k]) :
                minIdx = k
        tmp = ary[i]
        ary[i] = ary[minIdx]
        ary[minIdx] = tmp

    return ary

ary2 = [[55, 33, 250, 44],
         [88,  1,  67, 23],
         [199,222, 38, 47],
         [155,145, 20, 99]]
ary1 = []

for i in range(len(ary2)) :
    for k in range(len(ary2[i])) :
        ary1.append(ary2[i][k])

print('1차원 변경 후, 정렬 전 -->', ary1)
ary1 = selectionSort(ary1)
print('1차원 변경 후, 정렬 후 -->', ary1)
print('중앙값 --> ', ary1[len(ary1)//2])
더보기
1차원 변경 후, 정렬 전 --> [55, 33, 250, 44, 88, 1, 67, 23, 199, 222, 38, 47, 155, 145, 20, 99]
1차원 변경 후, 정렬 후 --> [1, 20, 23, 33, 38, 44, 47, 55, 67, 88, 99, 145, 155, 199, 222, 250]
중앙값 -->  67

 

 

 

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖