정렬을 해야하는 배열은 [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까지.. 이런식으로 가장 작은 수를 선택해서 순서대로 교체하는 것을 선택정렬이라고 합니다.
def selectionSort(nums):
for i in range(len(nums)):
min_index = i
for j in range(i+1, len(nums)):
if nums[j] < nums[min_index]:
min_index = j
nums[i], nums[min_index] = nums[min_index], nums[i]
return nums
아래와 같은 정렬되지 않은 수가 있을 때, index 0 <-> 1 부터 교환하기 시작합니다.
인접한 두 수를 비교하여 더 큰 것을 우측으로 이동시킵니다.
6 5 3 2 8
-> 5 6 3 2 8
그 다음은 index 1 <-> 2
5 6 3 2 8
-> 5 3 6 2 8
그 다음은 index 2 <-> 3
5 3 6 2 8
-> 5 3 2 6 8
그 다음은 index 3 <-> 4
5 3 2 6 8
-> 5 3 2 6 8
이렇게 제일 마지막 두 수 까지 비교하면, 제일 큰 수가 제일 마지막 index에 위치하는 것을 알 수 있습니다.
다시 처음부터 시작합니다.
5 3 2 6 8
-> 3 5 2 6 8
3 5 2 6 8
-> 3 2 5 6 8
3 2 5 6 8
-> 3 2 5 6 8
이번 교환에는 index 2까지 비교하고 멈추면 됩니다.
마지막 index는 이미 제일 큰 수가 정렬된 상태이기 때문입니다.
이런식으로 계속 비교하고 교체하면 됩니다.!
def bubbleSort(arr):
for j in range(1, len(arr)):
for i in range(len(arr)-j):
if arr[i] > arr[i+1]:
arr[i+1],arr[i] = arr[i],arr[i+1]
return arr
str 이라는 'string'을 넘겨주면 글자순서를 바꿔서 return합니다.
reverse 메서드 사용은 금지!
input: 'hello'
output: 'olleh'
함수의 return에 string을 붙여서 사용합니다.
def getName(name):
return name
print(getName('김')+'님')
def reverseString(str):
if len(str) == 1:
return str
return str[-1] + reverseString(str[:-1])
마지막 글자를 반환하고 해당 문자열의 끝 index 전까지 반환하여,
문자열 길이가 1이 되면 해당 문자열을 반환하고 끝