[CodeKata] 16. selectionSort

그냥·2022년 7월 4일
0

CodeKata

목록 보기
17/18

문제

Selection Sort(선택정렬)

정렬을 해야하는 배열은 [7,5,4,2] 입니다.

첫 번째 loop에서는 index 0부터 3까지 확인하며 가장 작은 수를 찾습니다. 2 이므로 index 0의 7과 교체합니다. -> [2,5,4,7]

두 번째는 index 1부터 3까지 확인하며 가장 작은 수를 찾습니다. 4이므로 index 1의 5와 교체합니다 -> [2,4,5,7]

세 번째는 index 2부터 3까지.. 이런식으로 가장 작은 수를 선택해서 순서대로 교체하는 것을 선택정렬이라고 합니다.

Problem Statement
nums라는 정렬되지 않은 숫자 배열을 주면, 오름차순(1,2,3..10) 으로 정렬된 배열을 return해주세요.


풀이


1. 문제의 조건 정리
1) 숫자로 이루어진 배열을 인자로 받는다.
2) 오름차순으로 정렬된 숫자로 이루어진 배열을 반환한다.

2. 조건에 대한 코드 구현 방법 생각
1) 선택정렬은 모든 요소들을 하나 하나 살펴 보면서 정렬을 하는 것이기 때문에 for문을 사용해야 할 것이다.
2) 두 개의 요소를 비교해야 하므로 이중 for문을 사용한다.
3) 파이썬의 swap 기법을 사용해서 요소들의 자리를 바꾼다.

3. 구현 코드
def selectionSort(nums):
  for i in range(len(nums)):
    for j in range(len(nums)):
      if i >= j:
        continue
      elif nums[i] > nums[j]:
        nums[i], nums[j] = nums[j], nums[i]

  return nums

4. 코드 리뷰
1) 이중 for문을 사용해서 두 개의 요소를 비교한다.
2) n번째 인덱스를 다른 모든 요소와 비교할 경우 n이하의 인덱스는 continue를 한다.
3) n번째 인덱스의 값과 n초과의 인덱스의 값들과 비교할 때 nums[n] > nums[n+i] 일 경우 swap을 해준다.

0개의 댓글