{"componentChunkName":"component---src-templates-blog-post-js","path":"/Algorithm-Analysis/2020-05-31-알고리즘-Merge-Sort/","result":{"data":{"site":{"siteMetadata":{"title":"Hun's Footsteps 🥷","author":"전여훈","siteUrl":"https://jeonyeohun.netlify.app","comment":{"disqusShortName":"","utterances":"jeonyeohun/jeonyeohun.github.io"},"sponsor":{"buyMeACoffeeId":"jeonyeohun"}}},"markdownRemark":{"id":"27f1ff8a-28f7-585a-8cfc-b35475534dd5","excerpt":"합병정렬, 머지소트, 병합정렬 합병정렬은 퀵정렬과 마찬가지로 분할정복을 이용해서 정렬을 수행하는 알고리즘이다. 퀵정렬과는 다르게 항상 𝛩(nlgn) 의 시간 복잡도를 보장한다는 장점이 있지만, 정렬을 위해 추가적인 메모리를 크게 사용한다는 단점이 있다. Algorithm Concept 합병정렬은 다음과 같은 과정을 통해 배열의 요소들을 정렬하게 된다. (오름차순) 나누어진 배열의 길이가…","html":"<h2 id=\"합병정렬-머지소트-병합정렬\" style=\"position:relative;\"><a href=\"#%ED%95%A9%EB%B3%91%EC%A0%95%EB%A0%AC-%EB%A8%B8%EC%A7%80%EC%86%8C%ED%8A%B8-%EB%B3%91%ED%95%A9%EC%A0%95%EB%A0%AC\" aria-label=\"합병정렬 머지소트 병합정렬 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>합병정렬, 머지소트, 병합정렬</h2>\n<p>합병정렬은 퀵정렬과 마찬가지로 분할정복을 이용해서 정렬을 수행하는 알고리즘이다. 퀵정렬과는 다르게 항상 𝛩(nlgn) 의 시간 복잡도를 보장한다는 장점이 있지만, 정렬을 위해 추가적인 메모리를 크게 사용한다는 단점이 있다.</p>\n<h2 id=\"algorithm-concept\" style=\"position:relative;\"><a href=\"#algorithm-concept\" aria-label=\"algorithm concept permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Algorithm Concept</h2>\n<p>합병정렬은 다음과 같은 과정을 통해 배열의 요소들을 정렬하게 된다. (오름차순)</p>\n<ol>\n<li>나누어진 배열의 길이가 1이 될때까지 배열을 반으로 계속 나눈다.</li>\n<li>나누어진 배열을 합치면서 정렬을 수행하면서 합친다.</li>\n<li>합칠때는 합칠 두 배열의 길이의 총합만큼의 별도 배열을 준비해서 두 배열에서 작은 순서대로 가져와서 배열에 넣어준다.</li>\n</ol>\n<h2 id=\"example\" style=\"position:relative;\"><a href=\"#example\" aria-label=\"example permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example</h2>\n<p>말로만 하면 헷갈리니까 아래 배열을 머지소트로 정렬하는 과정을 따라가보자.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 18.999999999999996%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAdklEQVQY03WPSQ7AIAwD+f8j2aEPYDlwcWsKFUL0EGmsxE4iailglVGrPvWOXCtKzmitQcQQYLRG8B5XjLDGwDvX2VnbNZn9ybuHzNmU0huopPyaWqkn0L6BTwCHyVwymR6GTw/91D1wns2Te636jzfNl/N4+QbXny2fLCroQAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"1\"\n        title=\"1\"\n        src=\"/static/480fce2897d9b3d96c1b647442021c6d/c1b63/1.png\"\n        srcset=\"/static/480fce2897d9b3d96c1b647442021c6d/5a46d/1.png 300w,\n/static/480fce2897d9b3d96c1b647442021c6d/0a47e/1.png 600w,\n/static/480fce2897d9b3d96c1b647442021c6d/c1b63/1.png 1200w,\n/static/480fce2897d9b3d96c1b647442021c6d/58354/1.png 1396w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"phase-1\" style=\"position:relative;\"><a href=\"#phase-1\" aria-label=\"phase 1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phase 1</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 42.33333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA50lEQVQoz41Ri46DIBD0/3+xgK/K5UQU1GqMnnO7lKY2bWI3GRZ2h2EzJKCYpgld28I5d0fXHbKHqzVca5/9IyL3b9tYCgkvXBCXC4o8h64qKClQFgVKOiupUKUCRZYiVSr0OT+4Mt5b1/UpOI4jjDGwTfMOa2F/Stj6l872rd/EvB0nPI11oWU/pe37jmQm/0xdo6EJX0Cvcr2lCTnmeX7hmQ+8IDgOA/kkkWdZ9E8GT6rrFVIIaK2D4I1syci7B499ZJ+Zx/5zLQguywJPn9J7H+Ajwp7qw9AHwVNe398Fv7GQid/GP33vZEfhhHljAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"2\"\n        title=\"2\"\n        src=\"/static/3a8c1d43bf1292654394d34413e67868/c1b63/2.png\"\n        srcset=\"/static/3a8c1d43bf1292654394d34413e67868/5a46d/2.png 300w,\n/static/3a8c1d43bf1292654394d34413e67868/0a47e/2.png 600w,\n/static/3a8c1d43bf1292654394d34413e67868/c1b63/2.png 1200w,\n/static/3a8c1d43bf1292654394d34413e67868/9f9a4/2.png 1560w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<center> 먼저 배열을 반으로 나눈다. </center>\n<h2 id=\"phase-2\" style=\"position:relative;\"><a href=\"#phase-2\" aria-label=\"phase 2 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phase 2</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 38.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABIklEQVQoz4VQi46DMAzj/z9xgvIYTONRYCsw3r44cNOddKdVstKkiePa2/cd77OtBz6ddf6zTC6Pl2kcYW2NurijEdi6RiOoBbaqMM8ztm07ataiyTON9dlXSU/fdUqqhExCEyIOLkgjAxMYpNcr4iiSe4DX64V1XZHEMaIwxC30NTJnn3+56II3IRU418G1Fq4RyILOOYV7PrEsiyrUnLC5xp89XKqEvzzEfuLD2bf/PRyGAUWeoypL/Vbbtsjvd/WlLArk8jZNkypkD3OqGcV3zpVSq6pSZx6PBzzKDQ09S5SQJMb3ccsy9YhvJNjk7Zok4p1B1zkMfa8+spalKQKZ4UKP/vXySKVUMcow8+8aIxfxO0feYZEZ+nr0nL0Cqv4CTrZni+M1ossAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"3\"\n        title=\"3\"\n        src=\"/static/9b0c4ee8d01e6d88ff5d3d4ba4170bbe/c1b63/3.png\"\n        srcset=\"/static/9b0c4ee8d01e6d88ff5d3d4ba4170bbe/5a46d/3.png 300w,\n/static/9b0c4ee8d01e6d88ff5d3d4ba4170bbe/0a47e/3.png 600w,\n/static/9b0c4ee8d01e6d88ff5d3d4ba4170bbe/c1b63/3.png 1200w,\n/static/9b0c4ee8d01e6d88ff5d3d4ba4170bbe/10d53/3.png 1724w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<center> 배열의 길이가 1이 되지 않았기 때문에 나누어진 배열을 각각 한번 더 나눈다 </center>\n<h2 id=\"phase-3\" style=\"position:relative;\"><a href=\"#phase-3\" aria-label=\"phase 3 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phase 3</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 40%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABC0lEQVQoz42R6W6DMBCEef9XxEDStIJw2OYwhzimO9s2Ij8SdSWEdxjNLp8jvKp9exyP48B/fdE0TbBNg77rsO87vHdwzsGXOawVve/VPMibvjEEbOsq3yy8s78+i3Ec1Re13sPEMYo8x7Zt+LhecckyfGUGqTG4F4Uaq7JUH0OXZUGWpuK9qM/ERpawP4H8yOmcwA3DMGDg46qHzuKfcNt5nnUwPWHoxVfrmboGvobzhtsbX0SQf9A5qa4q5cnq2lZ7cjtfTte1qEQPolNzwrCuayyy5VNgIyI5kRervN+RSM9LOgeSa2KM6tQ+bzekiVFcT4GcEE48ZuHGnpzPgarLdtSpkTP7VW7/G4gRbK8nL1xlAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"4\"\n        title=\"4\"\n        src=\"/static/2e931683e2c52be3340aee6fede0186a/c1b63/4.png\"\n        srcset=\"/static/2e931683e2c52be3340aee6fede0186a/5a46d/4.png 300w,\n/static/2e931683e2c52be3340aee6fede0186a/0a47e/4.png 600w,\n/static/2e931683e2c52be3340aee6fede0186a/c1b63/4.png 1200w,\n/static/2e931683e2c52be3340aee6fede0186a/41870/4.png 1788w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<center> 3과 1은 길이가 1이 되었기 때문에 분할을 멈추고 나머지 배열들은 다시 한번 더 반으로 나누어서 분할한다. </center>\n<h2 id=\"phase-4\" style=\"position:relative;\"><a href=\"#phase-4\" aria-label=\"phase 4 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phase 4</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 828px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 79.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAABYlAAAWJQFJUiTwAAABQElEQVQ4y6VUi26DMAzk/3+vU6eywtTxHg+ptBBewstZhBECG9MsnXIkzsXORVjjOBKAUHwNFT+tK24tk/diLby1rsJaJj/KkrIsoyLPGeB1Vc3JdV0b69ijVbgUzGWC73kayvt9FgTHXOD7DHDs2RUsioKiMCTneiXXcZiXUwUsKHkcRWRfLvR6PjNHpfsVykWcGgYB498V8h2mKSd9JglzIe9Nu0M5hzXkgBt3uOdy3/fUti11XTcnz3NyPOTy1vMYhoEq6fTj+WSxvSejVbgWVZXBJBghhKBGopKiqWwTHDk4bL3faBlJyhQFuAnHwTECMAUHGC1vCapNb7atiUD43XXp43bj+T8JxlFIL6cTV6IqxIj3CUF8HxZUrSZxrFUYSvHvlr1jghibyQQxoWkaYw5YmmII/vbHOfKnQXwBpCjbyMZPQhgAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"5\"\n        title=\"5\"\n        src=\"/static/382d17e08425f04035c31fccbf037270/8efc2/5.png\"\n        srcset=\"/static/382d17e08425f04035c31fccbf037270/5a46d/5.png 300w,\n/static/382d17e08425f04035c31fccbf037270/0a47e/5.png 600w,\n/static/382d17e08425f04035c31fccbf037270/8efc2/5.png 828w\"\n        sizes=\"(max-width: 828px) 100vw, 828px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<center> 분할된 모든 배열의 길이가 1이되었기 때문에 분할을 멈추고, 마지막으로 분할된 배열부터 다시 합쳐준다. 이때 합칠 두 배열의 길이의 총합 만큼의 별도의 배열을 준비하고, 각 배열 요소를 비교해서 더 작은 요소부터 새로운 배열에 넣어준다. 이 경우에서는 6과 7을 비교했을 때 6이 더 작기 때문에 새로운 배열에 0번째 이덱스에 6을 넣고 1번째 인덱스에 7을 넣었다. </center>\n<h2 id=\"phase-5\" style=\"position:relative;\"><a href=\"#phase-5\" aria-label=\"phase 5 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phase 5</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 828px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 79.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAABYlAAAWJQFJUiTwAAABPklEQVQ4y5WSiXLCMAxE+f8fbFJKh5ITcpaE3Imr1YxdQ5zU9YxGtiVeFmsPgtayLGJvob7Xo9cO8oDctq1om+Y36DzPs2ruuk40dK/HOI5PUAWcpkmEQcARR5HaD8OggGmSCN/zuB6FIe+rqtoGogkQ13U54/wKBOzjeBRf5zPXrYDvBAx83wjE3efpxED0WgHlX0LWgXmWqToCH623gMhD3zOgeTxEdb/zo78OBYpwjz70Q8gTcM82gMnJYuLyx9a20f0GOwDUkwrAkKUyU/9Kobwoi0Iktxu/EWyR0CCyNBUphRwU6t9laTT9Cii9Jm0DCPYyI1DHR6yAaIQ6x3lje1zjmM/I8J/rOHzGxP+l0L9cOOsK+Z7Co5q1QviqyHNR0hvhPTn0PQXqdV1vA03jt1mm/pVC3Q5/hUnhDxGT27q5Fb/AAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"6\"\n        title=\"6\"\n        src=\"/static/e56f21897da6fcc0b248a4997481e66a/8efc2/6.png\"\n        srcset=\"/static/e56f21897da6fcc0b248a4997481e66a/5a46d/6.png 300w,\n/static/e56f21897da6fcc0b248a4997481e66a/0a47e/6.png 600w,\n/static/e56f21897da6fcc0b248a4997481e66a/8efc2/6.png 828w\"\n        sizes=\"(max-width: 828px) 100vw, 828px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<center> 다음 배열도 같은 방법으로 합쳐준다. </center>\n<h2 id=\"phase-6\" style=\"position:relative;\"><a href=\"#phase-6\" aria-label=\"phase 6 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phase 6</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 828px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 79.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAABYlAAAWJQFJUiTwAAABXElEQVQ4y7VU7Y6CMBDk/V/P47xEEQRakG8BURJh7SxU4PAnNhl3Om62A51gkFp9328CLEOTLRZmGSBt21J5vVJVllQCijdNQ+3jsdBRq6oaqu5VqJX2dogfNHmuS1IICqRkniYJN4MHSsd/wvO4St8noYBeX2moXddNA3ECxLPj0N9+T2EQUJam7ALcOh7peDjQJQy5DxoGmabJHPpiIBziRLixTyd2kaaDQ7jBQY5t8zANDDxZFvdi6GLgra65KbpcKI4iCgJJRZ5TPdMBOOE6cvRiGOriHWLzfD4XwInASv+3173fjU1zu/GjJHFMMaAeATwZOWtx9NZZm3EkYhUb3xtiI8ZISB2Vcc/aGJW5BqwuRccGN/mrogC3Oh54+dBw++DQAPd8pp/djrUPsRkCrKMzd/nWVEzmGmIDiE/BftzvHORcRQVxybNsxbkqTNqkF0Xx5Vve8vP1AprdzbesLWL6AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"7\"\n        title=\"7\"\n        src=\"/static/17404d91550264dd914cc25d81b6604c/8efc2/7.png\"\n        srcset=\"/static/17404d91550264dd914cc25d81b6604c/5a46d/7.png 300w,\n/static/17404d91550264dd914cc25d81b6604c/0a47e/7.png 600w,\n/static/17404d91550264dd914cc25d81b6604c/8efc2/7.png 828w\"\n        sizes=\"(max-width: 828px) 100vw, 828px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<center> 계속해서 합치는 과정을 해주는데 지금부터는 배열의 길이가 늘어나서 조금 헷갈릴 수도 있다. 합치는 과정은 정확하게 다음과 같이 진행된다. </center>\n<ol>\n<li>합쳐야할 두 배열의 길이가 각각 1, 2 이므로 길이 3짜리 배열을 준비한다.</li>\n<li>먼저 각 배열의 처음 값인 3과 2를 비교한다. 2가 더 작기 때문에 2를 새로운 배열에 먼저 넣어준다.</li>\n<li>2 다음에 값이 있기 때문에 이번에는 3과 5를 비교해서 더 작은 값을 배열에 넣는다.</li>\n<li>남은 값이 하나이므로 이 값을 마지막으로 배열에 넣는다.</li>\n</ol>\n<h2 id=\"phase-7-and-more-on\" style=\"position:relative;\"><a href=\"#phase-7-and-more-on\" aria-label=\"phase 7 and more on permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phase 7 and More on</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.666666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA0UlEQVQoz5VSiw6DIAzc//+jz/lCiCwmKj5mx3VicNMlI7n0bHsHVG7rutIZsM74rxxwE1VFtRCkpOQISMuRV0rRsiwsHoaBXK+ry7pmgOumeRsmcUxAkefk8zAIqCwKmueZDbuuoziKKE0SrkdhSPc0pTzLmGMjNuxtI3Z3MF40xpBbT3vSz/qu63uObIjmeZpYPI4jjYge/I2+6vYbOjeW3RDzw/FxFVwBuOI+kIfuofXRUNtEVZY8BwFsw0c8cK8uth8IXdu2R8Orp/MPnM8Lcs1nTRcQ/88AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"8\"\n        title=\"8\"\n        src=\"/static/fb93234c75496591096f13e29ee9e039/c1b63/8.png\"\n        srcset=\"/static/fb93234c75496591096f13e29ee9e039/5a46d/8.png 300w,\n/static/fb93234c75496591096f13e29ee9e039/0a47e/8.png 600w,\n/static/fb93234c75496591096f13e29ee9e039/c1b63/8.png 1200w,\n/static/fb93234c75496591096f13e29ee9e039/c830c/8.png 1754w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>계속 진행하다보면 마지막으로 합쳐주는 구간이 나오는데, 합쳐주는 과정을 더 상세하게 보기 위해 이 구간에서 합치는 과정을 한단계씩 자세히 확인해보자. 일단 두 배열의 길이의 합인 6만큼의 새로운 배열을 만들었다.</p>\n<h3 id=\"step-1\" style=\"position:relative;\"><a href=\"#step-1\" aria-label=\"step 1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 1</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABEElEQVQoz5VR2Y7DIAzM/39eqx5qoibZkgMS9qHbBnJObRIqKq20WksjG2YYbIiWYQAIyzhiWRZwhPldzzM+tAEfItLHI2SSQO/3aIoCUkm0TQMpJRSht9YZTm2L9nSCSmLowwGqLKGUWrV1jYbqaZoQVecz0ixDtdtBkDHXJRlnaYqvPIfpOmc40iFxuSDbtHkcIyfeawshMFLnkbndYOg2Qxvm+YSljowxsATOM43qgjhTiFVLsHSR1zI6WrM2cuMQLLn3fe9GDOGNDXOs8di0bDrw227hDH/ud2TXKwR1yyNw+yV1w3mt172C+S37fT7Db/3+FDfN4+FIflwmw/xXXVcVvrX+7PC37/8vfLwAd39kj0udq5IAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"9\"\n        title=\"9\"\n        src=\"/static/f274fd892a5cd5b48e10b8cb57a26a5c/c1b63/9.png\"\n        srcset=\"/static/f274fd892a5cd5b48e10b8cb57a26a5c/5a46d/9.png 300w,\n/static/f274fd892a5cd5b48e10b8cb57a26a5c/0a47e/9.png 600w,\n/static/f274fd892a5cd5b48e10b8cb57a26a5c/c1b63/9.png 1200w,\n/static/f274fd892a5cd5b48e10b8cb57a26a5c/e67a8/9.png 1740w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>두 배열의 시작 값인 2와 1을 비교해서 더 작은 값을 새 배열에 넣어준다.</p>\n<h3 id=\"step-2\" style=\"position:relative;\"><a href=\"#step-2\" aria-label=\"step 2 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 2</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABG0lEQVQoz6VS2W6DMBDk/z8viXIpSoDYgHHpQxpic3k66wpE+tKHWhrt7Hp3dn0koe8BIgwDQgiQtba/uXhhHGNNrCMPq/2k2e9hLhc02y2s1jC1wYe1MMagJrqui4IDG1r6hnvN8Qh7OMCytjmdYszWNUaKJyU3b2mKcrOBorDwgsLp7YY8y+Cci4I9p1F5jpQo2Tw7n5GxttztYkzf77Fp4khcUcApBde28N5HEU+InaZpObL4jhM7TuPZ1LPGk0vsxVrJTSSZNwJPdTleR8E1ZmHBEue0neQTnlymn1cU/Ho8kF6vUJxWjqvZudAq2h+u3znztGIufbmGmve+PIoIts9nTDRVFR9ibf/iVVnis2neJ1y+xD8wr2+pIGSgaDx1AwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"10\"\n        title=\"10\"\n        src=\"/static/02bf0b83bd1f90e4a55d4b56ed985bd3/c1b63/10.png\"\n        srcset=\"/static/02bf0b83bd1f90e4a55d4b56ed985bd3/5a46d/10.png 300w,\n/static/02bf0b83bd1f90e4a55d4b56ed985bd3/0a47e/10.png 600w,\n/static/02bf0b83bd1f90e4a55d4b56ed985bd3/c1b63/10.png 1200w,\n/static/02bf0b83bd1f90e4a55d4b56ed985bd3/e67a8/10.png 1740w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>1은 이미 사용된 값이니까 검사 값을 배열의 다음값으로 바꿔준다.</p>\n<h3 id=\"step-3\" style=\"position:relative;\"><a href=\"#step-3\" aria-label=\"step 3 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 3</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABIElEQVQoz6VSyXLCMBTL//8eDDuEkI0kpIdCsMNiIb0SCoee6hlN3iLryXaiEAK0wv2OcLkARLjdfmrsvfrPWJn137jhrR8dmgYVcVgu0UynqOdztJMJqv0edVWh73sTvF6vaJiL285mxm3Ia8lXralr3CgeFVmGOElQjsdIFwvEqxXK0Qjb9Rq73Q7OORO80E3GfEuon5CbUFj7VMvT1IZG7nyG8x6+beEo7vMcrizhWZPYnVcxHFm5o2NHN+J58Rmrdu4640Yiy6qng57fnlMMJPUaJJEnlBvEffK0T+6HZYLH4ze2m40dqeDkJI6R8Qg5HQiqfcTWS6Hr0p66rn4fRYLd6WTE4SHKorB4gGp/xXtezxev68Ph65f4B4b1AFUSZGCy0hr0AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"11\"\n        title=\"11\"\n        src=\"/static/a4d2778b427acd7b5e7caf5bb769066c/c1b63/11.png\"\n        srcset=\"/static/a4d2778b427acd7b5e7caf5bb769066c/5a46d/11.png 300w,\n/static/a4d2778b427acd7b5e7caf5bb769066c/0a47e/11.png 600w,\n/static/a4d2778b427acd7b5e7caf5bb769066c/c1b63/11.png 1200w,\n/static/a4d2778b427acd7b5e7caf5bb769066c/e67a8/11.png 1740w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>위와 마찬가지로 2 와 6을 비교하고 더 작은 값인 2를 새 배열에 넣은 뒤, 배열의 참조위치를 한칸 이동시킨다.</p>\n<h3 id=\"step-4\" style=\"position:relative;\"><a href=\"#step-4\" aria-label=\"step 4 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 4</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABHUlEQVQoz51S2XKDMAzk/38vmVwPgXBjl84kDcHmsLqrQkv7WM/sWNYua0kmCiGIAGEBV5gmkWGQQMzzV27VbHjVIA4bPnqzVpq6FovdNI00xkh7PIoBLODLUg3HcRRLHrr2dFLOHg7Sns+as/hugnlUFoXE16twz9JU4iSRareTBML0cpE+z9VwGLzk4BOA/A3cDcbVfq+5Isv00qh/vUTR9wrnvfSoxMGIZvP9/t2yasijGocCqHGImXt1ncwYT0QxS/XOiQehO25a4TCn9ULlCOS2/MB5LksNPx4PbTtH2Ww9iWNtQVtEXGGOBaohyJMrcmhxpsaY5udRaNg9nyrk4/BhaMCYYKyPtZz/xnVVyXvb/q4wbH6b/2JdnxzoZCz9ZzlXAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"12\"\n        title=\"12\"\n        src=\"/static/217e02439cf90ab369f5448e9f4bdf06/c1b63/12.png\"\n        srcset=\"/static/217e02439cf90ab369f5448e9f4bdf06/5a46d/12.png 300w,\n/static/217e02439cf90ab369f5448e9f4bdf06/0a47e/12.png 600w,\n/static/217e02439cf90ab369f5448e9f4bdf06/c1b63/12.png 1200w,\n/static/217e02439cf90ab369f5448e9f4bdf06/e67a8/12.png 1740w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>3과 6중 더 작은 값인 3을 배열에 넣고 참조값을 한칸 뒤로 이동시킨다.</p>\n<h3 id=\"step-5\" style=\"position:relative;\"><a href=\"#step-5\" aria-label=\"step 5 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 5</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABHklEQVQoz51S2W6DMBDk/38vUa6HcJ8ulZIGsDm8mdlCS19raeTVzjDeg8B7LwL4FTx+nkXGUTyxLN+5TbPjVYPY7/jgwxipq0oM7qaupW4aac9naQADuKJQw2maxJCHrr1clDOnk7TXq+YMvpthHhR5LuH9LrzTJJEwiqQ8HCSCMLndZMgyNRxHJxn4CCAfg4thXB6PmsvTVB8Nhr4XxTAorHMyoBILI5otj8dPy6ohj2osCqDGImau7zpZMJ6AYpbqrBUHQm+8tMFiTnzQ7nnk9vzIea5HDb+eT207Q9lsPQpDbUFbRFxijhxHEsfKk8szaFEhNU1T/y6Fht3rpUIuh4uhAWOCMXNVWSp0cSu35T/b9m+Ffvfb/BfbeQMT+mQcx5uGyAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"13\"\n        title=\"13\"\n        src=\"/static/2199466c77dd2237b0d36b8e11e65655/c1b63/13.png\"\n        srcset=\"/static/2199466c77dd2237b0d36b8e11e65655/5a46d/13.png 300w,\n/static/2199466c77dd2237b0d36b8e11e65655/0a47e/13.png 600w,\n/static/2199466c77dd2237b0d36b8e11e65655/c1b63/13.png 1200w,\n/static/2199466c77dd2237b0d36b8e11e65655/e67a8/13.png 1740w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>5와 6 중 더 작은 값인 5를 배열에 넣는다. 이번에는 5가 마지막 값이기 때문에 그냥 끝낸다.</p>\n<h3 id=\"step-6\" style=\"position:relative;\"><a href=\"#step-6\" aria-label=\"step 6 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 6</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1200px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABGUlEQVQoz51Sa4uDQBDz//+9UkpLqe/Xqgft9XR9psleLQr36RbChpnM7GTUW5YFIJY3dJZpAoYBizDPv7GN5gPFx3Gn9eqqQlkUqHibskRpDJrTCYaoiD7LXMORhRVzZVlANYbcpCma4xHmekVN7VTX8DIG/dsNuuMogh8EyA8HBOczossFXZK4hsPQI4ljBL7vtGEYImTeaVmTko98xOvaFg5d52D7Hh0ntWykZvP9/rHs8qvOWljV0YHQ8rH5+YQn8cSd9RT0bOZu2lthuRs9aLf57U3NoJ2/j2v4/Xg427IkO7KVkidcgXjOCbSOiDbFd1py7X79UK7hD0dVUh9HSRWJC+KKFXnusM2v/Ktp9hP++Uv8Azov4kZj2ynBUxEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"14\"\n        title=\"14\"\n        src=\"/static/f94307e506f5b47f3f2da7e9c6e4e3bb/c1b63/14.png\"\n        srcset=\"/static/f94307e506f5b47f3f2da7e9c6e4e3bb/5a46d/14.png 300w,\n/static/f94307e506f5b47f3f2da7e9c6e4e3bb/0a47e/14.png 600w,\n/static/f94307e506f5b47f3f2da7e9c6e4e3bb/c1b63/14.png 1200w,\n/static/f94307e506f5b47f3f2da7e9c6e4e3bb/e67a8/14.png 1740w\"\n        sizes=\"(max-width: 1200px) 100vw, 1200px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>왼쪽 배열의 모든 요소에 대한 처리가 끝났기 때문에 오른쪽 배열에서 처리가 안된 값들을 순차적으로 새 배열에 채워준다. 이미 오른쪽 배열은 병합하는 과정에서 정렬이 되어있기 때문에 순서대로 넣어주기만 해도 정렬은 유지된다.</p>\n<h2 id=\"implmentation\" style=\"position:relative;\"><a href=\"#implmentation\" aria-label=\"implmentation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Implmentation</h2>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;stdio.h></span></span>\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">merge</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> arr<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> left<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> mid<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> right<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">int</span> cur_left <span class=\"token operator\">=</span> left<span class=\"token punctuation\">;</span>     <span class=\"token comment\">// 왼쪽 배열요소를 검사할 커서</span>\n    <span class=\"token keyword\">int</span> cur_right <span class=\"token operator\">=</span> mid<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span>   <span class=\"token comment\">// 오른쪽 배열요소를 검사할 커서</span>\n    <span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> left<span class=\"token punctuation\">;</span>            <span class=\"token comment\">// 암사배열의 시작위치. 항상 0이 아님.</span>\n\n    <span class=\"token keyword\">int</span> temp_arr<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>cur_left <span class=\"token operator\">&lt;=</span> mid <span class=\"token operator\">&amp;&amp;</span> cur_right <span class=\"token operator\">&lt;=</span> right<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span> <span class=\"token comment\">// 왼쪽이나 오른쪽 커서가 끝에 도달할때까지 반복</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">[</span>cur_left<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;=</span> arr<span class=\"token punctuation\">[</span>cur_right<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>      <span class=\"token comment\">// 왼쪽 커서가 가르키는 값이 오른쪽 커서가 가르키는 값보다 작으면</span>\n            temp_arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span>cur_left<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>           <span class=\"token comment\">// 해당값을 임시배열에 넣기</span>\n            cur_left<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>                            <span class=\"token comment\">// 커서 한칸 이동</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">else</span><span class=\"token punctuation\">{</span>\n            temp_arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span>cur_right<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>          <span class=\"token comment\">// 오른쪽 커서가 참조하는 값이 더 큰 경우에는 오른쪽 값을 임시 배열로</span>\n            cur_right<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        i<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>                                       <span class=\"token comment\">// 임시배열의 참조위치 증가</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>cur_left <span class=\"token operator\">></span> mid<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>                            <span class=\"token comment\">// 왼쪽 배열의 커서가 mid 보다 크다면 적어도 왼쪽 배열 요소들은 모두 사용됨.</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> j <span class=\"token operator\">=</span> cur_right <span class=\"token punctuation\">;</span> j <span class=\"token operator\">&lt;=</span> right <span class=\"token punctuation\">;</span> j<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span> <span class=\"token comment\">// 혹시 오른쪽 배열에 있는 값들 중 사용이 안된 값이 있을 수도 있으니까 오른쪽 커서를 쭉 돌리면서 체크</span>\n            temp_arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>                   <span class=\"token comment\">// 남은 값들로 배열 채워주기</span>\n            i<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> j <span class=\"token operator\">=</span> cur_left <span class=\"token punctuation\">;</span> j <span class=\"token operator\">&lt;=</span> mid <span class=\"token punctuation\">;</span> j<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n            temp_arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n            i<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> j <span class=\"token operator\">=</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">;</span> j <span class=\"token operator\">&lt;=</span> right <span class=\"token punctuation\">;</span> j<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n        a<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> temp_arr<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>                         <span class=\"token comment\">// 임시 배열의 값을 기존 배열에 복사</span>\n    <span class=\"token punctuation\">}</span>\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">merge_sort</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> arr<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> left<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> right<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">int</span> mid<span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>left <span class=\"token operator\">&lt;</span> right<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>                               <span class=\"token comment\">// 배열의 길이가 1이 아니라면 계속 재귀호출로 분할</span>\n        mid <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>left <span class=\"token operator\">+</span> right<span class=\"token punctuation\">)</span><span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token function\">merge_sort</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">,</span> left<span class=\"token punctuation\">,</span> mid<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>                 <span class=\"token comment\">// 왼쪽 배열 정렬</span>\n        <span class=\"token function\">merge_sort</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">,</span> mid<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> right<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>              <span class=\"token comment\">// 오른쪽 배열 정렬</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"alogrithm-analysis\" style=\"position:relative;\"><a href=\"#alogrithm-analysis\" aria-label=\"alogrithm analysis permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Alogrithm Analysis</h2>\n<p>머지소트의 시간 복잡도는 배열을 계속해서 반으로 분리하기 때문의 완전이진트리의 높이인 lgn 과 비교연산을 통해 새로운 배열을 채우는 과정이 모든 단계마다 수행되기 때문에 𝛩(nlgn) 의 복잡도를 가진다.</p>","frontmatter":{"title":"[알고리즘 정리] 합병정렬(Merge Sort)","date":"May 31, 2020"}}},"pageContext":{"slug":"/Algorithm-Analysis/2020-05-31-알고리즘-Merge-Sort/","previous":{"fields":{"slug":"/Algorithm-Analysis/2020-05-30-알고리즘-Quick-Sort/"},"frontmatter":{"title":"[알고리즘 정리] 퀵정렬(Quick Sort)","category":"Algorithm-Analysis","draft":false}},"next":{"fields":{"slug":"/Algorithm-Analysis/2020-05-31-알고리즘-Counting-Sort/"},"frontmatter":{"title":"[알고리즘 정리] 계수정렬(Counting Sort)","category":"Algorithm-Analysis","draft":false}}}},"staticQueryHashes":["2486386679","3128451518"]}