자료ꡬ쑰

μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜ 2 - 선택 μ •λ ¬(selection sort)

stoneeee 2022. 3. 29. 15:18

선택 정렬은 μ •λ ¬λ˜μ§€ μ•Šμ€ μ˜μ—­μ—μ„œ μ΅œμ†Ÿκ°’μ„ μ„ νƒν•œ λ’€, μ •λ ¬λ˜μ§€ μ•Šμ€ μ˜μ—­μ˜ 첫번째 μš”μ†Œμ™€ λ°”κΎΈκ³  κ³ μ •μ‹œν‚€λŠ” 과정을 λ°˜λ³΅ν•˜λŠ” μ •λ ¬ 방식이닀.

λ¬Όλ‘  μ΅œλŒ“κ°’μ„ μ΄μš©ν•œ 정렬도 κ°€λŠ₯ν•˜λ‹€. 

μ‹œκ°„ λ³΅μž‘λ„λŠ” 버블 μ •λ ¬κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ O(n**2)이닀.

 

 

 

μ•„λž˜μ˜ 배열에 λŒ€ν•œ μ˜€λ¦„μ°¨μˆœ 선택 정렬을 μ‹€μ‹œν•΄λ³΄μž.

 

 

λ¨Όμ €, 전체 κ΅¬κ°„μ—μ„œ κ°€μž₯ μž‘μ€ μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€. 1이 선택될 것이닀.

 

 

μ΄λ ‡κ²Œ μ„ νƒλœ 1을 κ°€μž₯ μ™Όμͺ½μ— μœ„μΉ˜ν•œ 2와 μ„œλ‘œ λ§žλ°”κΎΌ λ’€, κ³ μ •μ‹œν‚¨λ‹€.

λ‹€μ‹œ μ •λ ¬λ˜μ§€ μ•Šμ€ μ˜μ—­μ—μ„œ κ°€μž₯ μž‘μ€ μš”μ†Œλ₯Ό μ„ νƒν•œλ‹€.

 

 

1은 이미 κ³ μ •λ˜μ—ˆμœΌλ―€λ‘œ 2κ°€ μ΅œμ†Ÿκ°’μ΄λ‹€.

μˆœμ„œκ°€ κ³ μ • λ˜μ§€ μ•Šμ€ λ°°μ—΄μ˜ 제일 μ™Όμͺ½μ— μœ„μΉ˜ν•œ μš”μ†Œμ™€ μ„œλ‘œ 자리λ₯Ό λ°”κΎΈμ–΄μ€€λ‹€.

 

 

2 μ—­μ‹œ μ•žμœΌλ‘œ μœ„μΉ˜λ₯Ό 바꾸지 μ•Šμ„ 것이닀. μœ„μΉ˜κ°€ κ³ μ •λœ 것이닀.

 

 

같은 과정을 계속 λ°˜λ³΅ν•˜λ©΄ λœλ‹€. κ³ μ •λ˜μ§€ μ•Šμ€ λ°°μ—΄μ˜ μ΅œμ†Ÿκ°’μΈ 3을 μ„ νƒν•˜μ—¬ 제일 μ™Όμͺ½μ˜ μš”μ†Œμ™€ μžλ¦¬λ°”κΏˆμ„ ν•œλ‹€.

 

 

λ§ˆμ§€λ§‰μœΌλ‘œ 남은 두 μš”μ†Œμ˜ μœ„μΉ˜κΉŒμ§€ λ°”κΏ”μ£Όλ©΄ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 정렬이 된 것을 확인할 수 μžˆλ‹€.

 

 

 

선택 정렬은 버블 μ •λ ¬κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ ν•œ 번 μ‹œν–‰μ„ λ°˜λ³΅ν•  λ•Œλ§ˆλ‹€ μš”μ†Œλ“€μ΄ κ³ μ •λœ, 즉 정렬이 μ™„λ£Œλœ μ˜μ—­μ΄ ν•˜λ‚˜μ”© λŠ˜μ–΄λ‚˜λŠ” 것을 확인할 수 μžˆλ‹€.

 

 

 

선택 정렬을 파이썬으둜 κ΅¬ν˜„ν•˜μžλ©΄, μ•„λž˜μ™€ 같이 ν‘œν˜„ν•  수 μžˆλ‹€.

 

def SelectionSort(arr):
	for i in range(len(arr)-1):
    		j = arr.index(min(arr[i:])
        	arr[j], arr[i] = arr[i], arr[j]

 

 

'자료ꡬ쑰' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜ 1 - 버블 μ •λ ¬(bubble sort)  (0) 2022.03.26