πŸ“• Algorithm/Algorithm

μ •λ ¬ - μ‚½μž… μ •λ ¬

ν•œμ½”λ”© 2021. 1. 3. 16:40
728x90
728x90

μ •λ ¬

→ 데이터λ₯Ό νŠΉμ •ν•œ 기쀀에 따라 μˆœμ„œλŒ€λ‘œ λ‚˜μ—΄ν•˜λŠ” 것

 

μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ„ 배우고 데이터λ₯Ό μ •λ ¬ν•œ ν›„, λ‹€μŒμ— 배울 이진 탐색이 κ°€λŠ₯!

(즉, μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ€ 이진 νƒμƒ‰μ˜ μ „μ²˜λ¦¬ κ³Όμ •) 

 

μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ˜ μ’…λ₯˜ : 선택 / μ‚½μž… / 퀡 / κ³„μˆ˜ λ“±

 

 

 

이 μΉ΄λ“œλ“€μ„ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•΄λ³΄μž.

 

μ‚½μž… μ •λ ¬

→ μ•žμ— μžˆλŠ” μˆ˜λ“€κ³Ό λΉ„κ΅ν•˜μ—¬ μžμ‹ μ˜ 자리λ₯Ό μ°Ύμ•„κ°€κΈ°

 

 

맨 μ•ž μΈλ±μŠ€λŠ” μ •λ ¬λ˜μ–΄ μžˆλ‹€ κ°€μž₯ν•˜κ³ , λ‘λ²ˆμ§Έ μΈλ±μŠ€λΆ€ν„° μžμ‹ μ˜ μ•žμ— μžˆλŠ” 인덱슀의 μˆ˜λ“€κ³Ό μžμ‹ μ„ λΉ„κ΅ν•œλ‹€. 이 λ•Œ, μ•žμ— μžˆλŠ” μˆ˜λŠ” 7이고 λŒ€μƒμ€ 5μ΄λ―€λ‘œ, 5κ°€ 7에 μ•žμœΌλ‘œ κ°„λ‹€.

 

 

κ·Έ λ‹€μŒ λŒ€μƒμΈ μ„Έλ²ˆμ§Έ 인덱슀의 9λŠ”, μžμ‹ μ˜ μ•žμ— μžˆλŠ” 인덱슀의 μˆ˜λ“€κ³Ό μžμ‹ μ„ λΉ„κ΅ν•˜μ—¬ μžμ‹ μ˜ 자리λ₯Ό μ°ΎλŠ”λ‹€. 9λŠ” 5와 7보닀 ν¬λ―€λ‘œ 7의 뒀에 μœ„μΉ˜ν•œλ‹€. (κ²°κ΅­ μ œμžλ¦¬μ— μžˆλ‹€.)

 

 

κ·Έ λ‹€μŒ λŒ€μƒμΈ λ„€λ²ˆμž¬ 인덱슀의 0도, μžμ‹ μ˜ μ•žμ— μžˆλŠ” 인덱슀의 μˆ˜λ“€κ³Ό μžμ‹ μ„ λΉ„κ΅ν•˜μ—¬ μžμ‹ μ˜ 자리λ₯Ό μ°ΎλŠ—λ‚˜. 0은 5와 7, 9보닀 μž‘μœΌλ―€λ‘œ 5 μ•žμœΌλ‘œ μ΄λ™ν•œλ‹€.

 

 

κ·Έ λ‹€μŒ λŒ€μƒμΈ λ‹€μ„―λ²ˆμ§Έ 인덱슀의 3도 λ§ˆμ°¬κ°€μ§€λ‘œ 0, 5, 7, 9와 λΉ„κ΅ν•˜μ—¬ μžμ‹ μ˜ 자리λ₯Ό μ°ΎλŠ”λ‹€. 0λ³΄λ‹€λŠ” 크고 5λ³΄λ‹€λŠ” μž‘μœΌλ―€λ‘œ 0κ³Ό 5μ‚¬μ΄λ‘œ μ΄λ™ν•œλ‹€. 이와 같은 과정을 λ°˜λ³΅ν•œλ‹€.

 

 

4도 μžμ‹ μ˜ 자리λ₯Ό μ°Ύκ³ 

 

 

λ§ˆμ§€λ§‰ 인덱슀의 κ°’ 8도 μžμ‹ μ˜ 자리λ₯Ό μ°Ύμ•„κ°„λ‹€. 그러면 μ•„λž˜μ™€ 같이 정렬이 μ™„μ„±λœλ‹€.

 

 

μ‚½μž… μ •λ ¬ μ†ŒμŠ€μ½”λ“œ (C++)

#include <iostream>
#include <vector>

using namespace std;

vector<int> arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};

int main(void) {

	int tmp;

	// λ‘λ²ˆμ§Έ 데이터뢀터 제자리λ₯Ό μ°Ύμ•„κ°€λŠ” λ°©μ‹μ˜ 반볡문
	for (int i = 1; i < arr.size(); i++) {

		// i번째 데이터 μ•žμ˜ μˆ˜λΆ€ν„° μ•žμœΌλ‘œ κ°€λ©΄μ„œ 자리 μ°ΎκΈ°
		for (int j = i; j > 0; j--) {

			// 자리λ₯Ό μ°Ύμ•„κ°€λ‹€ μžκΈ°λ³΄λ‹€ 큰 수λ₯Ό λ§Œλ‚˜λ©΄ 정지
			if (arr[j] < arr[j - 1]) {
				tmp = arr[j];
				arr[j] = arr[j - 1];
				arr[j - 1] = tmp;
			}
			else
				break;
		}

		// λ‹¨κ³„λ³„λ‘œ μ •λ ¬λ˜λŠ” λ°°μ—΄ 좜λ ₯
		for (int k = 0; k < arr.size(); k++)
			cout << arr[k] << " ";
		cout << endl;
	}

	return 0;
}

 

 

좜처 : 이것이 취업을 μœ„ν•œ μ½”λ”©ν…ŒμŠ€νŠΈλ‹€ with 파이썬 : μ·¨μ—…κ³Ό 이직을 κ²°μ •ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ 인터뷰 μ™„λ²½ κ°€μ΄λ“œ

728x90
λ°˜μ‘ν˜•