{"id":8569,"date":"2022-06-21T10:07:17","date_gmt":"2022-06-21T10:07:17","guid":{"rendered":"https:\/\/www.prepbytes.com\/blog\/?p=8569"},"modified":"2023-11-28T04:42:44","modified_gmt":"2023-11-28T04:42:44","slug":"heap-algorithm-for-generating-permutations","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/","title":{"rendered":"Heap Algorithm for Generating Permutations"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg\" alt=\"\" \/><\/p>\n<p>Heaps algorithms are employed for generating all conceivable permutations of n-decimals within a number. This algorithm minimizes the need for extensive rearrangements, essentially constructing each permutation from its predecessor by swapping a single element while leaving the remaining elements undisturbed.<\/p>\n<h2>How to use Heap algorithm for Generating Permutations?<\/h2>\n<p>The Heap&#8217;s algorithm is a well-known method for generating all permutations of a set. It efficiently produces all permutations of a given sequence in a specific order without recursion. The algorithm minimizes memory usage and executes in a way that it generates each permutation by only swapping elements in the sequence.<\/p>\n<p>For n numbers, it takes O(n!) time complexity as there are n! Permutations.<\/p>\n<p><strong><em>For example:<\/em><\/strong><br \/>\nLet n = 789<br \/>\nPossible permutations are:<br \/>\n789, 798, 879, 897, 987, 978<\/p>\n<p>So, here we have 6 total permutations i.e N! (3!(3 decimal digits) = 6)<\/p>\n<h3>Algorithm:<\/h3>\n<ul>\n<li>Calculate all the possible permutations of the first n-1 digits adjoining the last element to each of these permutations.<\/li>\n<li>Iterate the digits, and check if n is an odd number then swap the first digit with the last digit and if n is an even number then swap the ith element with the last element.<\/li>\n<li>After repeating the above steps, Algorithm produces all the permutations of N.<\/li>\n<\/ul>\n<h3>Code Implementation<\/h3>\n\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_8565 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_8565 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_8565 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_8565 .wpsm_nav-tabs > li.active > a, #tab_container_8565 .wpsm_nav-tabs > li.active > a:hover, #tab_container_8565 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_8565 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_8565 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_8565 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_8565 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_8565 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_8565 .wpsm_nav-tabs > li > a:hover , #tab_container_8565 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_8565 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_8565 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_8565 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_8565 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_8565 .wpsm_nav-tabs > li{\r\n\t\tfloat:left !important ;\r\n\t\t\t\tmargin-right:-1px !important;\r\n\t\t\t\t\t}\r\n\t#tab_container_8565 .wpsm_nav-tabs{\r\n\t\tfloat:none !important;\r\n\t\tmargin:0px !important;\r\n\t}\r\n\r\n\t#tab_container_8565 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_8565 .wpsm_nav{\r\n\t\t\t}\r\n\r\n}\r\n\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_8565 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_8565 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t#tab_container_8565 .wpsm_nav-tabs > li{\r\n\t\t\tfloat:none !important;\r\n\t\t}\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_8565\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_8565\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_8565_1\" aria-controls=\"tabs_desc_8565_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C++<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_8565_2\" aria-controls=\"tabs_desc_8565_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Java<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_8565_3\" aria-controls=\"tabs_desc_8565_3\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Python<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_8565\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_8565_1\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"cpp\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include &lt;bits\/stdc++.h&gt;\r\nusing namespace std;\r\n \r\nvoid printArr(int a[], int n)\r\n{\r\n    for (int i = 0; i &lt; n; i++)\r\n        cout &lt;&lt; a[i] &lt;&lt; &quot; &quot;;\r\n    cout&lt;&lt;endl;\r\n}\r\n \r\n\r\nvoid heapPermutation(int a[], int size, int n)\r\n{\r\n  \r\n    if (size == 1) {\r\n        printArr(a, n);\r\n        return;\r\n    }\r\n \r\n    for (int i = 0; i &lt; size; i++) {\r\n        heapPermutation(a, size - 1, n);\r\n \r\n      \r\n        if (size % 2 == 1)\r\n            swap(a[0], a[size - 1]);\r\n \r\n        else\r\n            swap(a[i], a[size - 1]);\r\n    }\r\n}\r\n \r\nint main()\r\n{\r\n    int a[] = { 7, 8, 9 };\r\n    int n = sizeof a \/ sizeof a[0];\r\n    heapPermutation(a, n, n);\r\n    return 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_8565_2\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"java\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\nclass HeapAlgo {\r\n   \r\n    void printArr(int a[], int n)\r\n    {\r\n        for (int i = 0; i &lt; n; i++)\r\n            System.out.print(a[i] + &quot; &quot;);\r\n        System.out.println();\r\n    }\r\n \r\n    void heapPermutation(int a[], int size, int n)\r\n    {\r\n        if (size == 1)\r\n            printArr(a, n);\r\n \r\n        for (int i = 0; i &lt; size; i++) {\r\n            heapPermutation(a, size - 1, n);\r\n \r\n            if (size % 2 == 1) {\r\n                int temp = a[0];\r\n                a[0] = a[size - 1];\r\n                a[size - 1] = temp;\r\n            }\r\n \r\n            else {\r\n                int temp = a[i];\r\n                a[i] = a[size - 1];\r\n                a[size - 1] = temp;\r\n            }\r\n        }\r\n    }\r\n \r\n    public static void main(String args[])\r\n    {\r\n        HeapAlgo obj = new HeapAlgo();\r\n        int a[] = { 1, 2, 3 };\r\n        obj.heapPermutation(a, a.length, a.length);\r\n    }\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_8565_3\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"python\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\ndef heapPermutation(a, size):\r\n \r\n    if size == 1:\r\n        print(a)\r\n        return\r\n \r\n    for i in range(size):\r\n        heapPermutation(a, size-1)\r\n \r\n    \r\n        if size & 1:\r\n            a[0], a[size-1] = a[size-1], a[0]\r\n        else:\r\n            a[i], a[size-1] = a[size-1], a[i]\r\n \r\n \r\na = [1, 2, 3]\r\nn = len(a)\r\nheapPermutation(a, n)\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_8565 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_8565 a\"),jQuery(\"#tab-content_8565\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t\n<p><strong>Conclusion<\/strong><br \/>\nIn conclusion, the Heap Algorithm stands out as a powerful tool for efficiently generating permutations of elements. By minimizing movements and strategically interchanging single elements while keeping others undisturbed, this algorithm provides an effective means of exploring all possible arrangements. Whether you&#8217;re dealing with numbers, characters, or any other elements, Heap&#8217;s Algorithm proves to be a versatile solution for permutation generation, offering optimization and simplicity in the process.<\/p>\n<h2>FAQs (Frequently Asked Questions) related to Heap Algorithm for Generating Permutations:<\/h2>\n<p>Here are some FAQs related to Heap Algorithm for Generating Permutations:<\/p>\n<p><strong>Q1: What is the Heap Algorithm used for?<br \/>\nA1:<\/strong> The Heap Algorithm is primarily used for generating permutations of elements. It efficiently explores all possible arrangements by minimizing movements and interchanging elements strategically.<\/p>\n<p><strong>Q2: How does the Heap Algorithm minimize movements during permutation generation?<br \/>\nA2:<\/strong> The Heap Algorithm achieves minimal movements by generating each permutation from the previous one through the interchange of a single element while leaving the remaining elements undisturbed. This strategic approach contributes to efficiency in the generation process.<\/p>\n<p><strong>Q3: Can the Heap Algorithm be applied to different types of elements, such as numbers or characters?<br \/>\nA3:<\/strong> Yes, the Heap Algorithm is versatile and can be applied to various types of elements, including numbers, characters, or any other data types. Its flexibility makes it a useful tool in diverse programming scenarios.<\/p>\n<p><strong>Q4: Are there situations where the Heap Algorithm may not be the most efficient choice for permutation generation?<br \/>\nA4:<\/strong> While the Heap Algorithm is efficient, it may not be the optimal choice for very large datasets due to its recursive nature. In such cases, alternative algorithms or optimizations may be considered for improved performance.<\/p>\n<p><strong>Q5: How is the Heap Algorithm implemented in programming languages like C++ or Python?<br \/>\nA5:<\/strong> The implementation of the Heap Algorithm varies depending on the programming language. In general, it involves recursive functions or iterative approaches to generate permutations. Specific syntax and details may differ based on the language being used.<\/p>\n<p><strong>Q6: Can the Heap Algorithm handle permutations with repetitions?<br \/>\nA6:<\/strong> The classic Heap Algorithm is designed for generating unique permutations. If permutations with repetitions are required, additional modifications or considerations may be needed in the implementation to accommodate such scenarios.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heaps algorithms are employed for generating all conceivable permutations of n-decimals within a number. This algorithm minimizes the need for extensive rearrangements, essentially constructing each permutation from its predecessor by swapping a single element while leaving the remaining elements undisturbed. How to use Heap algorithm for Generating Permutations? The Heap&#8217;s algorithm is a well-known method [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[131],"tags":[175],"class_list":["post-8569","post","type-post","status-publish","format-standard","hentry","category-heap","tag-heap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Heap Algorithm for Generating Permutations | Heap | Prepbytes<\/title>\n<meta name=\"description\" content=\"Heaps algorithms are used to generate all the possible permutations of n-decimals of a number. This algorithm generates each permutation from the previous one by interchanging a single element while other elements are not disturbed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Heap Algorithm for Generating Permutations | Heap | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"Heaps algorithms are used to generate all the possible permutations of n-decimals of a number. This algorithm generates each permutation from the previous one by interchanging a single element while other elements are not disturbed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-21T10:07:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-28T04:42:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Heap Algorithm for Generating Permutations\",\"datePublished\":\"2022-06-21T10:07:17+00:00\",\"dateModified\":\"2023-11-28T04:42:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/\"},\"wordCount\":582,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg\",\"keywords\":[\"heap\"],\"articleSection\":[\"Heap\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/\",\"name\":\"Heap Algorithm for Generating Permutations | Heap | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg\",\"datePublished\":\"2022-06-21T10:07:17+00:00\",\"dateModified\":\"2023-11-28T04:42:44+00:00\",\"description\":\"Heaps algorithms are used to generate all the possible permutations of n-decimals of a number. This algorithm generates each permutation from the previous one by interchanging a single element while other elements are not disturbed.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Heap\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/heap\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Heap Algorithm for Generating Permutations\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Heap Algorithm for Generating Permutations | Heap | Prepbytes","description":"Heaps algorithms are used to generate all the possible permutations of n-decimals of a number. This algorithm generates each permutation from the previous one by interchanging a single element while other elements are not disturbed.","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:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/","og_locale":"en_US","og_type":"article","og_title":"Heap Algorithm for Generating Permutations | Heap | Prepbytes","og_description":"Heaps algorithms are used to generate all the possible permutations of n-decimals of a number. This algorithm generates each permutation from the previous one by interchanging a single element while other elements are not disturbed.","og_url":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2022-06-21T10:07:17+00:00","article_modified_time":"2023-11-28T04:42:44+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Heap Algorithm for Generating Permutations","datePublished":"2022-06-21T10:07:17+00:00","dateModified":"2023-11-28T04:42:44+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/"},"wordCount":582,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg","keywords":["heap"],"articleSection":["Heap"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/","url":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/","name":"Heap Algorithm for Generating Permutations | Heap | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg","datePublished":"2022-06-21T10:07:17+00:00","dateModified":"2023-11-28T04:42:44+00:00","description":"Heaps algorithms are used to generate all the possible permutations of n-decimals of a number. This algorithm generates each permutation from the previous one by interchanging a single element while other elements are not disturbed.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1655805980958-heap%20algorithm%20for%20generating%20permutations.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/heap-algorithm-for-generating-permutations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Heap","item":"https:\/\/prepbytes.com\/blog\/category\/heap\/"},{"@type":"ListItem","position":3,"name":"Heap Algorithm for Generating Permutations"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/8569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=8569"}],"version-history":[{"count":4,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/8569\/revisions"}],"predecessor-version":[{"id":18397,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/8569\/revisions\/18397"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=8569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=8569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=8569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}