C++ Chapter 6.3 : 배열과 선택 정렬

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


정렬 : 원소들끼리 서로 크기를 비교하여 원소들이 크기 순서대로 위치할 수 있도록 자리를 바꿔주는(swap) 작업. 오름차순으로 정렬하면 최소값이 맨 왼쪽에, 최대값이 맨 오른쪽에 위치하게 되며 크기 순서대로 나열된 형태가 된다.

/* 비교 */
n = 5 일때 
i = 0      j = 1 2 3 4     비교
i = 1      j = 2 3 4       비교
i = 2      j = 3 4         비교
i = 3   ->   j = 4

i 0부터 시작해서 n-2 까지 (i = n - 1 일땐 뒤에 숫자가 남아있는게 없어서 비교할게 없다.)
j i + 1 부터 시작해서 n - 1까지 
#include <iostream>

using namespace std;

void printArray(const int array[], const int length) 
// 배열 원소들을 출력할때 배열 길이도 알아야하므로 같이 넘겨준다. 값이 바뀔 일은 없으니 const
{
	for (int index = 0; index < length; ++index)
		cout << array[index] << " ";
	cout << endl;

}

int main()
{
	const int length = 5;

	int array[length] = { 3, 5, 2, 1, 4 };

	cout << "Your first value is: " << endl;
	
	printArray(array, length);

	for (int i = 0; i < length - 1; ++i)
	{
		int smallestIndex = i;
		
		for (int j = i + 1; j < length; ++j)
		{
			if (array[smallestIndex] > array[j])
			{
				smallestIndex = j; 
			}
		}

        // 작은 for문이 끝나면, 즉 해당 i와 비교된 j들 중 가장 작은 원소값의 인덱스가 smallestIndex에 저장된다.  

		// 작은 for문이 끝난 후 인덱스가 smallestIndex인 원소와 인덱스가 i인 원소와 자리를 바꿔준다. 
        // 자연스레 가장 작은 값이 앞에 위치하게 된다. 
		int temp = array[smallestIndex];
		array[smallestIndex] = array[i]; 
		array[i] = temp;

		cout << "your array is: " << endl;
		printArray(array, length);
	}

	cout << "Now your array is: " << endl;
	printArray(array, length); // 정렬된  1 2 3 4 5 가 출력 될 것.

	return 0;
}
/* 정렬 과정 */

1. array[0]   과   array[1],array[2],array[3],array[4]    들 비교
smallestIndex = 3  (array[3] = 1 이 가장 작으므로)
array[0]과 array[3] 자리 바꾸기 
❤ {1, 5, 2, 3, 4}

2. array[1]   과   array[2],array[3],array[4]    들 비교
smallestIndex = 2  (array[2] = 2 이 가장 작으므로)
array[1]과 array[2] 자리 바꾸기 
❤ {1, 2, 5, 3, 4}

3. array[2]   과   array[3],array[4]    들 비교
smallestIndex = 3  (array[3] = 3 이 가장 작으므로)
array[2]과 array[3] 자리 바꾸기 
❤ {1, 2, 3, 5, 4}

4. array[3]   과   array[4]    들 비교
smallestIndex = 4  (array[4] = 4 이 가장 작으므로)
array[3]과 array[4] 자리 바꾸기 
❤ {1, 2, 3, 4, 5}

5. 최종 {1, 2, 3, 4, 5}



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기