08/16

채언·2022년 8월 16일
0

1. 순위

  • 데이터의 나열에서, 앞의 값과 비교하면서 크고 작음을 이용해 순서를 알아낸다.
  • 데이터의 나열에서, 나열된 숫자만큼 0으로 채워진 리스트를 하나 만든다. 앞의 값과 뒤의 값을 비교해서 작은수의 인덱스 값에 해당하는 0으로 채워진 리스트 데이터값에 +1을 한다. for 문을 통해 이를 반복하면서 순서를 찾는다.

import random
class Ranking:

    def __init__(self,ms,es):
        self.midscore = ms
        self.endscore = es
        self.midrank = [0 for i in range(len(ms))]
        self.endrank = [0 for i in range(len(es))]
        self.rankdev = [0 for i in range(len(es))]

    def setRank(self,ss,rs):
        for idx,sco in enumerate(ss):
            for score in ss:
                if sco < score:
                    rs[idx] += 1

    def setMidRank(self):
        self.setRank(self.midscore,self.midrank)

    def getMidRank(self):
        return self.midrank

    def setEndRank(self):
        self.setRank(self.endscore,self.endrank)

    def getEndRank(self):
        return self.endrank

    def printing(self):
        for a,b in enumerate(self.midrank):
            dev = b - self.endrank[a]
            if dev > 0 :
                dev = '+' + str(abs(dev))
            elif dev < 0 :
                dev = '-' + str(abs(dev))
            else:
                dev = '='
            print(f'mid rank : {b} \t end rank : {self.endrank[a]} \t dev : {dev}')

midscore = random.sample(range(50,101),20)
endscore = random.sample(range(50,101),20)

answer = Ranking(midscore,endscore)

answer.setMidRank()
print(f'midscor : {midscore}')
print(f'mid rank : {answer.getMidRank()}')

answer.setEndRank()
print(f'endscor : {endscore}')
print(f'end rank : {answer.getEndRank()}')

answer.printing()

  • mid 와 end 시험성적을 랜덤으로 받고, mid의 등수와 end의 등수를 각각 구한다. 그리고 mid등수와 end 등수의 차이를 구해, 올라갔는지 내려갔는지 구하는 알고리즘이다. class를 이용하여 구성한다.

2. 버블정렬

  • 나열되어 있는 데이터에서, 처음 인덱스 숫자부터 끝까지 값을 차례대로 옆의 숫자와 비교하면서 큰 숫자를 가장 끝으로 옮겨, 클수록 오른쪽에 가도록 정렬하는 방법이다.

  • 이중 for 문을 돌면서, 인덱스 0과 1 그리고 1과2 ... 이렇게 끝의 값까지 두 개씩 비교하면서 큰 값이면 순서를 바꾸도록 한다. 그렇게 끝까지 돌면 큰 수 일수록 오른쪽에 정렬하게 된다.

3. 삽입정렬

4. 선택정렬

profile
화이팅!

0개의 댓글