[알고리즘] 순위

Stella·2023년 8월 31일

1. 순위(rank)

수의 크고 작음을 이용하여 순서를 정하는 것이다.
모든 값을 비교를 통해 순위를 정하는 것이다.
진 값을 index를 +1 올려준다.
결국 가장 큰 숫자는 0이 된다.

순위를 계산하는 절차를 순위 알고리즘이라고 한다.

import random

nums = random.sample(range(50, 101), 20)
ranks = [0 for i in range(20)] #길이가 20인 리스트를 만들 수 있다.

for idx, num1 in enumerate(nums):
    for num2 in nums:
        if num1 < num2:
            ranks[idx] += 1

print(f'nums: {nums}')
print(f'ranks: {ranks}')

for idx, num in enumerate(nums):
    print(f'nums: {num} \t rank: {ranks[idx] + 1}') # +1을 하는 이유 0부터 시작하기 때문에
  • 실습
    학급 학생(20명)들의 중간고사와 기말고사 성적을 이용해서 각각의 순위를 구하고, 중간고사 대비 기말고사 순위 변화(편차)를 출력하는 프로그램을 만들어보자. (시험 성적은 난수를 이용)

  • main 코드

import copy
def bubbleSort(ns, deepCopy=True):

    if deepCopy:
        cns = copy.copy(ns) # 깊은복사
    else:
        cns = ns # 얕은복사
    length = len(cns) - 1
    for i in range(length):
        for j in range(length - i):
            if cns[j] > cns[j+1]:
                cns[j], cns[j+1] = cns[j+1], cns[j]
    return cns
  • 출력 코드
import random as rd
import main as sm

students = []
for i in range(20):
    students.append(rd.randint(170, 185))

print(f'students: {students}')

sortedStudents = sm.bubbleSort(students, deepCopy=False)


print(f'students: {students}')
print(f'sortedStudents: {sortedStudents}')

# 얕은 복사 : 변수 명만 다르고 똑같은 것을 사용하는 것
# 깊은 복사 : 새로운 데이터를 만들어 내는 것

2. 깊은복사와 얕은 복사 차이

profile
공부 기록

0개의 댓글