상세 컨텐츠

본문 제목

[Python 오름차순 정렬] Sort 함수 사용하지 않고 정렬하기

Python

by donggyu1998 2022. 2. 2. 21:50

본문

반응형

💡 코드 작성 전 설명

 

1. 어린 아이가 공을 치우려고한다. 

2. 널브러져 있는 공을 하나씩 가져온다.

3. 크기가 작으면 앞에 놓고, 크면 뒤에 두려고 한다.

 

💡 실행 사진

💡 코드

 

 

어린 아이가 공을 치우려고한다. 

공이 널브러져 있는 것과, 치우면서 공을 정렬하려는 공간이 있을 것 이다.

 

널브러져 있는 공을 하나씩 가져온다.

새로운 공은 new_ball 변수를 통해 받아온다.

정렬하려는 공간 ( sorted_ball_list ) 에 공이 하나도 없을 경우, 맨 앞에 둔다.

 

from hashlib import new


def main():
    
    n = int(input("몇 개의 공이 있나요 ? :: "))
    print ("-"*30)
    ball_list = []
    sorted_ball_list = []
    size = 0
    
    while True:
        ball_number = int(input("공 숫자 입력 :: "))
        ball_list.append(ball_number)
        size = len(ball_list)
        
        if (size == n):
            print(ball_list) 
            
            for ball in range(size):
                
                new_ball = ball_list[ball]
                
                if (len(sorted_ball_list) == 0):
                    sorted_ball_list.append(new_ball)
                    
                else:
                    for ball in range(len(sorted_ball_list)):
                        
                        previous_ball = sorted_ball_list[ball]
                        
                        if (new_ball < previous_ball):
                            sorted_ball_list.insert(ball, new_ball)
                            break
                        else:
                            if new_ball == len(sorted_ball_list) - 1:
                                sorted_ball_list.append(new_ball)
                                
                            continue
                            
            print(sorted_ball_list)
                    
if __name__ == "__main__":
    main()

크기가 작으면 앞에 놓고, 크면 뒤에 두려고 한다.

새로 가져온 공은 new_ball 이다.

새로 가져온 공이 놓여져 있는 공과 비교한다. 

놓여져 있는 공은 previous_ball 이다. ( sorted (ball) ) n 번째 놓여져 있는 공

 

공의 크기를 비교하여 새로운 공이, 이전 공보다 작으면 insert 함수로 놓고 끝난다.

그 후 새로운 공을 가져오기 위해 break 를 한다.

 

insert 는 (i, x) 형태로 사용한다.

array의 원하는 위치 i 앞에 추가할 값 x를 삽입할 수 있다.

nums = [1, 2, 3]
nums.insert(0, [10, 20])  # 0번째(맨앞에) 추가
[[10, 20], 1, 2, 3]

nums.insert(-1, 100)  # 끝에서 1번째 전에 추가
print(nums)
[[10, 20], 1, 2, 100, 3]  # 리스트 맨 끝에 저장되지 않음

# 맨 마지막에 요소를 추가하는 경우
nums = [1, 2, 3]
nums.insert(len(nums), 100)
[1, 2, 3, 100]

 

반응형

관련글 더보기