Rainbow๐ŸŒˆCoder 2021. 9. 21. 20:44
728x90

์‚ฝ์ž… ์ •๋ ฌ์ด๋ž€ ์ˆซ์ž๋ฅผ ์›ํ•˜๋Š” ์œ„์น˜๋ฅผ ์ฐพ์•„๊ฐ€์„œ ์‚ฝ์ž…ํ•˜๋Š” ์ •๋ ฌ์ด๋‹ค. ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ์›€์ง์—ฌ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” n์˜ ์ œ๊ณฑ์ด๋ผ๋Š” ์ ์—์„œ ๋™์ผํ• ์ง€๋ผ๋„ ์—ฐ์‚ฐ์ˆ˜๊ฐ€ ์ ์œผ๋ฏ€๋กœ ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋‚˜ ์„ ํƒ ์ •๋ ฌ๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

 

 

2 6 4 9 8 1 3 5 7 ๋ผ๋Š” 9๊ฐœ์˜ ์ˆซ์ž๋ฅผ ํ•œ ๋ฐฐ์—ด์— ๋‹ด๊ณ  ์‚ฝ์ž… ์ •๋ ฌ์„ ํ™œ์šฉํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐ”๊พธ๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ํ•ด๋ณด์ž.

์ œ์ผ ์•ž ์ˆซ์ž๋ฅผ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค, ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋ฅผ 8๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ผ ๊ฐ€์ •ํ•œ๋‹ค.

2 6 4 9 8 1 3 5 7              //2<6์ด๋ฏ€๋กœ 2์™€ 6 ํŒจ์Šค

2 _ 6 '4' 9 8 1 3 5 7          //4๋ฅผ 6 ์•ž์— ๋„ฃ์œผ๋ฉด ๋˜๊ฒ ๋‹ค.(6๊ณผ ์ž๋ฆฌ๋ฐ”๊ฟˆ)

2 4 6 9 8 1 3 5 7              //ํ˜„์žฌ ์ƒํ™ฉ(๋ถˆ์™„์ „ํ•˜์ง€๋งŒ ์ •๋ ฌ์ด ์ฐจ์ธฐ ๋˜๊ณ  ์žˆ์Œ)

2 4 6 _ 9 '8' 1 3 5 7          //6<9์ด๋ฏ€๋กœ 9ํŒจ์Šค 8์„ 9 ์•ž์— ๋„ฃ์ž. (9์™€ ์ž๋ฆฌ๋ฐ”๊ฟˆ)

2 4 6 8 9 1 3 5 7             //ํ˜„์žฌ ์ƒํ™ฉ(๋ถˆ์™„์ „ํ•˜์ง€๋งŒ ์ •๋ ฌ์ด ์ฐจ์ธฐ ๋˜๊ณ  ์žˆ์Œ)

_ 2 4 6 8 9 '1' 3 5 7          //1์„ 2 ์•ž์— ๋„ฃ์œผ๋ฉด ๋˜๊ฒ ๋‹ค.(9 -> 8 -> 6 -> 4->2 ๋ชจ๋‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋น„๊ตํ•˜๋‹ค๊ฐ€ ๋งจ ์•ž ์ •์ฐฉ )

1 2 4 6 8 9 3 5 7             //ํ˜„์žฌ ์ƒํ™ฉ(๋ถˆ์™„์ „ํ•˜์ง€๋งŒ ์ •๋ ฌ์ด ์ฐจ์ธฐ ๋˜๊ณ  ์žˆ์Œ)

1 2 _ 4 6 8 9 '3' 5 7          //3์„ 4 ์•ž์— ๋„ฃ์ž. (9-> 8-> 6-> 4 ๋ชจ๋‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋น„๊ตํ•˜๋‹ค๊ฐ€ 4 ์•ž ์ •์ฐฉ)

1 2 3 4 6 8 9 5 7             //ํ˜„์žฌ ์ƒํ™ฉ(๋ถˆ์™„์ „ํ•˜์ง€๋งŒ ์ •๋ ฌ์ด ์ฐจ์ธฐ ๋˜๊ณ  ์žˆ์Œ)

1 2 3 4 _ 6 8 9 '5' 7          //5๋ฅผ 6 ์•ž์— ๋„ฃ์ž. (9 -> 8-> 6 ๋ชจ๋‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋น„๊ตํ•˜๋‹ค๊ฐ€ 6 ์•ž ์ •์ฐฉ)

1 2 3 4 5 6 8 9 7             //ํ˜„์žฌ ์ƒํ™ฉ(๋ถˆ์™„์ „ํ•˜์ง€๋งŒ ์ •๋ ฌ์ด ์ฐจ์ธฐ ๋˜๊ณ  ์žˆ์Œ)

1 2 3 4 5 6 _ 8 9 '7'          //7์„ 8 ์•ž์— ๋„ฃ์ž. (9 -> 8 ๋ชจ๋‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋น„๊ตํ•˜๋‹ค๊ฐ€ 8์•ž ์ •์ฐฉ)

1 2 3 4 5 6 7 8 9             //์™„๋ฃŒ~~

 

#include <iostream>
#include <array>
using namespace std;

int main()
{
     int temp = INT_MAX;
     int j= INT_MAX;
     int arr[10] = { 14,2,37,4,56,6,567,568,93,102 };
     for (int i = 0; i < 9; i++)
     {
         j = i;
             while (arr[j] >= arr[j + 1])
             {
             temp = arr[j];
             arr[j] = arr[j + 1];
             arr[j + 1] = temp;
             j--;

            if (j < 0)
                break;
             }
     }

for (auto ele:arr)
{
     cout << ele << " ";
}
return 0;
}


ํ•„์ž๊ฐ€ ์ฆ๊ฒจ์“ฐ๋Š” std::array๋กœ ๊ณ„์† ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋‹ค๊ฐ€ "array subscript out of range" ๊ฒฝ๊ณ ๋ฌธ์ด ๋– ์„œ ํฌ๊ธฐํ• ๊นŒ ํ–ˆ์ง€๋งŒ

            if (j < 0)
                break;

๋„ฃ์–ด์ฃผ๋‹ˆ ์“ฐ๋ ˆ๊ธฐ๊ฐ’์ด ์—†์–ด์ ธ์„œ์ธ์ง€ ์ •์ƒ ์ž‘๋™ํ•˜์˜€๋‹ค. ์˜ˆ์™ธ์ฒ˜๋ฆฌ์˜ ํž˜!

๋งˆ๋งˆ ์ฆ๊ฐ์‹ (์ด๋ฒˆ ์ฝ”๋“œ์— ์‚ฌ์šฉํ•œ j-- ๊ฐ™์ด...)์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๊ผผ๊ผผํ•˜๊ฒŒ ํ•ด์ฃผ๋„๋ก ํ•˜์ž!


#include <iostream>
#include <array>
using namespace std;

int main()
{
    int temp = INT_MAX;
    int j = INT_MAX;
    array<int,10>arr = { 14,2,37,4,56,6,567,568,93,102 };
    for (int i = 0; i < 9; i++)
    {
        j = i;
        while (arr[j] >= arr[j + 1])
        {
            temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
            j--;
            if (j < 0)
                break;
        }
    }

    for (auto ele : arr)
    {
        cout << ele << " ";
    }
    return 0;
}

728x90