
처음부터 끝까지 인접하는 인덱스의 값을 순차적으로 비교하면서 큰 숫자를 가장 끝으로 옮기는 알고리즘
nums = [10, 2, 7, 21, 0]
length = len(nums) - 1
for i in range(length):
for j in range(length - i):
if nums[j] > nums[j+1]:
# temp = nums[j]
# nums[j] = nums[j+1]
# nums[j+1] = temp
nums[j], nums[j+1] = nums[j+1], nums[j]
print(nums)
print()
print(nums)
[2, 10, 7, 21, 0]
[2, 7, 10, 21, 0]
[2, 7, 10, 21, 0]
[2, 7, 10, 0, 21]
[2, 7, 10, 0, 21]
[2, 7, 10, 0, 21]
[2, 7, 0, 10, 21]
[2, 7, 0, 10, 21]
[2, 0, 7, 10, 21]
[0, 2, 7, 10, 21]
[0, 2, 7, 10, 21]
정렬되어 있는 자료배열과 비교해서 정렬위치를 찾는다.
nums = [5, 10, 2, 1, 0]
for i1 in range(1, len(nums)):
i2 = i1 -1
cNum = nums[i1]
while nums[i2] > cNum and i2 >= 0: # 오름차순, '<'일시 내림차순
nums[i2 + 1] = nums[i2]
i2 -= 1
nums[i2 + 1] = cNum
print(f'nums: {nums}')
nums: [5, 10, 2, 1, 0]
nums: [2, 5, 10, 1, 0]
nums: [1, 2, 5, 10, 0]
nums: [0, 1, 2, 5, 10]
주어진 리스트 중에 최소값을 찾아, 그 값을 맨앞에 위치한 값과 교체하는 방식으로 자료를 정렬하는 알고리즘
nums = [4, 2, 5, 1, 3]
for i in range(len(nums) - 1):
minIdx = i
for j in range(i+1, len(nums)):
if nums[minIdx] > nums[j]:
minIdx = j
# tempNum = nums[i]
# nums[i] = nums[minIdx]
# nums[minIdx] = tempNum
nums[i], nums[minIdx] = nums[minIdx], nums[i]
print(f'nums: {nums}')
print(f'final nums: {nums}')
이글은 제로베이스 데이터 취업스쿨의 강의자료 일부를 발췌하여 작성되었습니다.