[c++] [์ ํ ์ ๋ ฌ] ํ์ฉํด์ ๋ฐฐ์ด ์ ์ซ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐ๊พธ๊ธฐ
์ ํ ์ ๋ ฌ
2 6 4 9 8 1 3 5 7 ๋ผ๋ ์ซ์๋ฅผ ์ ํ ์ ๋ ฌ์ ํ์ฉํด ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐ๊พธ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ ์ผ ์ ์ซ์๋ฅผ 0๋ฒ์งธ ์ธ๋ฑ์ค, ๋ง์ง๋ง ์ซ์๋ฅผ 8๋ฒ์งธ ์ธ๋ฑ์ค๋ผ๊ณ ๊ฐ์ ์ ํ๋ค๋ฉด,
2 6 4 9 8 1 3 5 7 //0๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (1๋ฐ๊ฒฌ)
1 2 6 4 9 8 3 5 7 //(1์ ์ ์ผ ์์ผ๋ก)
1 2 6 4 9 8 3 5 7 //1๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (2๋ฐ๊ฒฌ, ๊ทธ๋๋ก)
1 2 6 4 9 8 3 5 7 //2๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (3๋ฐ๊ฒฌ)
1 2 3 6 4 9 8 5 7 //(3์ ์์ผ๋ก)
1 2 3 6 4 9 8 5 7 //3๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (4๋ฐ๊ฒฌ)
1 2 3 4 6 9 8 5 7 //(4๋ฅผ ์์ผ๋ก)
1 2 3 4 6 9 8 5 7 //4๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (5๋ฐ๊ฒฌ)
1 2 3 4 5 6 9 8 7 //(5๋ฅผ ์์ผ๋ก)
1 2 3 4 5 6 9 8 7 //5๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (6๋ฐ๊ฒฌ, ๊ทธ๋๋ก)
1 2 3 4 5 6 9 8 7 //6๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (7๋ฐ๊ฒฌ)
1 2 3 4 5 6 7 9 8 //(7๋ฅผ ์์ผ๋ก)
1 2 3 4 5 6 7 9 8 //7๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (8๋ฐ๊ฒฌ)
1 2 3 4 5 6 7 8 9 //(8๋ฅผ ์์ผ๋ก)
1 2 3 4 5 6 7 8 9 //8๋ฒ์งธ ์ธํ ์ค๋ถํฐ ๋๊น์ง ํ์ธํ๊ณ (9๋ฐ๊ฒฌ, ๊ทธ๋๋ก)
์ ํ์ ๋ ฌ์ ์์ ๊ฐ์ด ๊ฐ์ฅ ์์ ๊ฒ์ ์ฐพ๊ณ ์์ผ๋ก ๋ณด๋ด๊ณ
์์ค์ ์ ์ธํ๊ณ ๋ ๊ฐ์ฅ ์์ ๊ฒ์ ์ฐพ๊ณ ์์ผ๋ก ๋ณด๋ด๋ ๋ฐฉ์์ ๋ฐ๋ณต์ด๋ค.
์๋๋ ์ ํ๋ธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ ์ฝ๋์ด๋ค.
#include <iostream>
using namespace std;
int main()
{
int arr[10] = { 34,65,3,5,7,231,45,6,8,33 };
int min, index, temp;
for (int i = 0; i < 10; i++)
{
min = INT_MAX;
for (int j = i; j < 10; j++) //์์ ์๋ for๋ฌธ์ด ํต์ฌ์ด๋ค. i๋ฒ์งธ ์ธ๋ฑ์ค ์ดํ ๋ชจ๋ ๋ฐฐ์ด์ ๊ฒํ ํ๊ฒ ๋๋ค.
{
if (min >= arr[j])
{
min = arr[j]; //๊ฐ์ฅ ์์ ๊ฐ์ด ์๋ ๋ฐฐ์ด ์ธ๋ฑ์ค์ ๋ค์ด์๋ ๊ฐ์ min์ ํ์คํ ๊ธฐ๋กํด๋๋ค.
index = j; //๊ฐ์ฅ ์์ ๊ฐ์ด ๋ด๊ฒจ์๋ค๊ณ ํ๋จํ ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์๋ฒ ์ญ์ ๋ฐ๋ก index ๋ณ์์ ๊ธฐ๋กํด๋๋ค.
} //์์ค์ ์ด์ : j๋ ๊ณ์ ์ฆ๊ฐํ๋ฏ๋ก i๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฐ๊ฟ ๋ ์จ๋จน์ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
}
temp = arr[i]; //์์ ์๋ for๋ฌธ์ด ๋ค ๋๋๋ฉด
//i๋ฒ์งธ ์ธ๋ฑ์ค์ ๊ฐ์ฅ ์์ ๊ฐ์ด ๋ด๊ธด ์ธ๋ฑ์ค ๊ฐ์ ๋ฐ๊พผ๋ค.(์์์ ๊ธฐ๋กํด๋ ์ ๋ณด๋ค์ ์ด์ฉํ์ฌ)
arr[i] = arr[index];
arr[index] = temp;
}
for (int k = 0; k < 10; k++)
{
cout << arr[k]<<' ';
}
return 0;
}