{"id":34344,"date":"2024-11-01T09:27:05","date_gmt":"2024-11-01T09:27:05","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34344"},"modified":"2024-11-01T10:57:37","modified_gmt":"2024-11-01T10:57:37","slug":"c-coding-test-course-quick-sort-2","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34344\/","title":{"rendered":"C++ Coding Test Course, Quick Sort"},"content":{"rendered":"<p><body><\/p>\n<p>Hello! In this session, we will take a closer look at the Quick Sort algorithm using C++. Quick Sort is a sorting algorithm that frequently appears in various programming interviews and algorithm exams. In this article, we will master Quick Sort through its concept, implementation, time complexity, and example problems.<\/p>\n<h2>1. Overview of Quick Sort<\/h2>\n<p>Quick Sort is a type of divide-and-conquer algorithm that efficiently sorts data. The algorithm works as follows:<\/p>\n<ol>\n<li>Select a pivot element from the given array.<\/li>\n<li>Divide the array into two sub-arrays based on the pivot. <br \/>(Elements less than the pivot go to the left sub-array, while elements greater than the pivot go to the right sub-array.)<\/li>\n<li>Recursively perform Quick Sort on both the left and right sub-arrays.<\/li>\n<li>Once the sub-arrays are sorted, place the pivot in the middle to form the final sorted array.<\/li>\n<\/ol>\n<h3>1.1 Selecting a Pivot<\/h3>\n<p>There are several methods for selecting a pivot. Common methods include:<\/p>\n<ul>\n<li>Selecting the first element as the pivot<\/li>\n<li>Selecting the last element as the pivot<\/li>\n<li>Selecting a random element as the pivot<\/li>\n<li>Selecting the median as the pivot<\/li>\n<\/ul>\n<p>It is important to choose an appropriate method as the pivot selection significantly impacts sorting performance.<\/p>\n<h3>1.2 Time Complexity of Quick Sort<\/h3>\n<p>The average time complexity of Quick Sort is O(n log n). However, in the worst-case scenario (e.g., when the array is already sorted), performance can degrade to O(n\u00b2). Good pivot selection methods are important to prevent this.<\/p>\n<h2>2. Problem Description<\/h2>\n<p>Now, let\u2019s solve a problem using Quick Sort. Solve the following problem:<\/p>\n<blockquote><p>\n<strong>Problem:<\/strong> Given an array of integers, sort the array in ascending order using the Quick Sort algorithm.<br \/>\n<strong>Input:<\/strong> <code>[10, 7, 8, 9, 1, 5]<\/code><br \/>\n<strong>Output:<\/strong> <code>[1, 5, 7, 8, 9, 10]<\/code>\n<\/p><\/blockquote>\n<h2>3. Problem Solving Process<\/h2>\n<p>The steps to solve the problem are as follows:<\/p>\n<h3>3.1 Algorithm Implementation<\/h3>\n<p>First, let&#8217;s implement the Quick Sort algorithm in C++.<\/p>\n<pre><code> \n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n\nusing namespace std;\n\n\/\/ Partition function\nint partition(vector&lt;int&gt; &amp;arr, int low, int high) {\n    int pivot = arr[high]; \/\/ Select the last element as pivot\n    int i = (low - 1); \/\/ Index for smaller elements\n\n    for (int j = low; j &lt; high; j++) {\n        \/\/ If current element is smaller than the pivot\n        if (arr[j] &lt; pivot) {\n            i++; \/\/ Increment index of smaller elements\n            swap(arr[i], arr[j]); \/\/ Swap elements\n        }\n    }\n    swap(arr[i + 1], arr[high]); \/\/ Swap the pivot to the correct location\n    return (i + 1); \/\/ Return the new index of the pivot\n}\n\n\/\/ Quick Sort function\nvoid quickSort(vector&lt;int&gt; &amp;arr, int low, int high) {\n    if (low &lt; high) {\n        \/\/ Perform partition and get the pivot index\n        int pi = partition(arr, low, high);\n\n        quickSort(arr, low, pi - 1); \/\/ Sort the left sub-array\n        quickSort(arr, pi + 1, high); \/\/ Sort the right sub-array\n    }\n}\n\n\/\/ Main function\nint main() {\n    vector&lt;int&gt; arr = {10, 7, 8, 9, 1, 5};\n    int n = arr.size();\n\n    quickSort(arr, 0, n - 1);\n\n    cout &lt;&lt; \"Sorted array: \";\n    for (int i = 0; i &lt; n; i++) {\n        cout &lt;&lt; arr[i] &lt;&lt; \" \";\n    }\n    return 0;\n}\n    <\/code><\/pre>\n<p>The code above implements the Quick Sort algorithm. The <code>partition<\/code> function divides the given array based on the pivot, and the <code>quickSort<\/code> function performs sorting recursively.<\/p>\n<h3>3.2 Code Explanation<\/h3>\n<p>Let\u2019s take a step-by-step look at the code:<\/p>\n<ul>\n<li><code>partition<\/code> function:\n<ul>\n<li>Selects the last element as the pivot.<\/li>\n<li>Divides the given array based on the pivot.<\/li>\n<li>Moves the pivot to its sorted position.<\/li>\n<li>Returns the new pivot index.<\/li>\n<\/ul>\n<\/li>\n<li><code>quickSort<\/code> function:\n<ul>\n<li>Checks the base condition and makes recursive calls for sub-arrays.<\/li>\n<li>Performs the process of &#8220;finding the pivot and sorting&#8221; for each sub-array.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>3.3 Code Execution Result<\/h3>\n<p>When the code is executed, it produces the following output:<\/p>\n<p><code>Sorted array: 1 5 7 8 9 10<\/code><\/p>\n<p>We can confirm that the sorted array is printed correctly. This indicates that Quick Sort has been performed successfully.<\/p>\n<h2>4. Additional Considerations<\/h2>\n<p>There are several additional considerations when using Quick Sort:<\/p>\n<h3>4.1 Stability<\/h3>\n<p>Quick Sort is an unstable sorting algorithm. That is, the relative order of elements with the same value is not guaranteed after sorting. If stability is required, other sorting algorithms (e.g., Merge Sort) should be considered.<\/p>\n<h3>4.2 Memory Usage<\/h3>\n<p>Quick Sort operates recursively, using memory on the call stack. In the worst case, it can have O(n) space complexity, but on average, it is O(log n).<\/p>\n<h2>5. Quick Sort vs Other Sorting Algorithms<\/h2>\n<p>Compared to other sorting algorithms, Quick Sort has the following advantages and disadvantages:<\/p>\n<h3>5.1 Advantages<\/h3>\n<ul>\n<li>Typically offers fast performance with an average of O(n log n).<\/li>\n<li>Requires less additional memory space.<\/li>\n<li>Supports recursive and intuitive implementations.<\/li>\n<\/ul>\n<h3>5.2 Disadvantages<\/h3>\n<ul>\n<li>Can have O(n\u00b2) performance in the worst case.<\/li>\n<li>Is an unstable sort and the relative order of identical elements may change.<\/li>\n<\/ul>\n<h2>6. Conclusion<\/h2>\n<p>In this article, we implemented the Quick Sort algorithm using C++ and explored various aspects. Quick Sort is an efficient and widely used sorting algorithm, making it a common topic in algorithm exams or coding interviews. Understanding and implementing Quick Sort will greatly aid in coding tests.<\/p>\n<p>Finally, try solving more problems using Quick Sort. Considering various cases will help deepen your understanding of this algorithm.<\/p>\n<footer>\n<p>Author: [Your Name] | Date: [Date of Writing]<\/p>\n<\/footer>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello! In this session, we will take a closer look at the Quick Sort algorithm using C++. Quick Sort is a sorting algorithm that frequently appears in various programming interviews and algorithm exams. In this article, we will master Quick Sort through its concept, implementation, time complexity, and example problems. 1. Overview of Quick Sort &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34344\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;C++ Coding Test Course, Quick Sort&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[111],"tags":[],"class_list":["post-34344","post","type-post","status-publish","format-standard","hentry","category-c-coding-test-tutorials-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C++ Coding Test Course, Quick Sort - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/34344\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C++ Coding Test Course, Quick Sort - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello! In this session, we will take a closer look at the Quick Sort algorithm using C++. Quick Sort is a sorting algorithm that frequently appears in various programming interviews and algorithm exams. In this article, we will master Quick Sort through its concept, implementation, time complexity, and example problems. 1. Overview of Quick Sort &hellip; \ub354 \ubcf4\uae30 &quot;C++ Coding Test Course, Quick Sort&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34344\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:27:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T10:57:37+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/34344\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34344\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"C++ Coding Test Course, Quick Sort\",\"datePublished\":\"2024-11-01T09:27:05+00:00\",\"dateModified\":\"2024-11-01T10:57:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34344\/\"},\"wordCount\":641,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"C++ Coding Test Tutorials\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34344\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34344\/\",\"name\":\"C++ Coding Test Course, Quick Sort - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:27:05+00:00\",\"dateModified\":\"2024-11-01T10:57:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34344\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34344\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34344\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C++ Coding Test Course, Quick Sort\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C++ Coding Test Course, Quick Sort - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/34344\/","og_locale":"ko_KR","og_type":"article","og_title":"C++ Coding Test Course, Quick Sort - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello! In this session, we will take a closer look at the Quick Sort algorithm using C++. Quick Sort is a sorting algorithm that frequently appears in various programming interviews and algorithm exams. In this article, we will master Quick Sort through its concept, implementation, time complexity, and example problems. 1. Overview of Quick Sort &hellip; \ub354 \ubcf4\uae30 \"C++ Coding Test Course, Quick Sort\"","og_url":"https:\/\/atmokpo.com\/w\/34344\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:27:05+00:00","article_modified_time":"2024-11-01T10:57:37+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/34344\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34344\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"C++ Coding Test Course, Quick Sort","datePublished":"2024-11-01T09:27:05+00:00","dateModified":"2024-11-01T10:57:37+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34344\/"},"wordCount":641,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["C++ Coding Test Tutorials"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34344\/","url":"https:\/\/atmokpo.com\/w\/34344\/","name":"C++ Coding Test Course, Quick Sort - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:27:05+00:00","dateModified":"2024-11-01T10:57:37+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34344\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34344\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34344\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"C++ Coding Test Course, Quick Sort"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34344","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=34344"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34344\/revisions"}],"predecessor-version":[{"id":34345,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34344\/revisions\/34345"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}