{"id":4482,"date":"2021-09-01T11:00:26","date_gmt":"2021-09-01T11:00:26","guid":{"rendered":"https:\/\/www.prepbytes.com\/blog\/?p=4482"},"modified":"2022-11-14T12:15:34","modified_gmt":"2022-11-14T12:15:34","slug":"recursive-selection-sort-for-singly-linked-list-swapping-node-links","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/","title":{"rendered":"Recursive selection sort for singly linked list | Swapping node links"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png\" alt=\"\" \/><br \/>\nThis blog consists of what is selection sort, dry run for performing selection sort, algorithm and implementation of recursive selection sort in linked list. Let\u2019s discuss recursive selection sort in linked list in detail.<\/p>\n<\/p>\n<h2> How To Perform Recursive Selection Sort In Linked List<\/h2>\n<p>In this problem, we will be given an unsorted linked list, and we need to sort it with the help of the selection sort algorithm recursively by referring to the best website to learn c language.<\/p>\n<p>The problem statement is relatively straightforward, we will get a linked list as input, and we will have to sort it in ascending order using <a href=\"https:\/\/prepbytes.com\/blog\/linked-list\/search-an-element-in-a-linked-list-iterative-and-recursive\/\" title=\"recursive\">recursive<\/a> selection sort.<\/p>\n<p>Let&#8217;s try to understand it more clearly using an example.<\/p>\n<ul>\n<li>Let the input list given to us be:<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2021\/08\/input-20.png\" alt=\"\" \/><\/p>\n<ul>\n<li>Now, we need to perform sorting on the above list and rearrange the list&#8217;s nodes accordingly to get a sorted list as output.<\/li>\n<li>So, after sorting, the newly formed list will be :<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2021\/08\/output-10.png\" alt=\"\" \/><\/p>\n<p><strong>Note:<\/strong> There are various sorting algorithms to do this task, but here in the problem statement, it is explicitly mentioned that we need to perform recursive selection sort. So, we will be performing that to get desired output.<\/p>\n<p>Now the main question is what is Selection sort and how does it work?<\/p>\n<p>Let&#8217;s find our answers in the next section.<\/p>\n<h4>Selection Sort<\/h4>\n<p>Let us first understand how selection sort works on an array:<\/p>\n<ul>\n<li>We start from the first element of the array and find the minimum element in the array to the right of this element (including the current element).<\/li>\n<li>Once we found the minimum element, we swap that minimum element with our current position element.<\/li>\n<li>Then repeat the above steps for all elements of array except last element because it would be automatically placed at its correct position after execution of above steps for elements till second last position.<\/li>\n<\/ul>\n<p>Let&#8217;s formulate the above steps in an algorithm:<\/p>\n<ul>\n<li>We will write a for loop that will iterate from the first to second last element of the array. Inside the for loop, we will perform the below three steps (step 1 to 3) for every array element.<br \/>\n1) Create a <strong>min<\/strong> variable and initialize it with the <strong>current element<\/strong>.<br \/>\n2) Then iterate on the array starting from the next position of the <strong>current element<\/strong> and update the <strong>min<\/strong> variable if an element less than <strong>min<\/strong> is found.<br \/>\n3) After the loop ends, swap <strong>current element<\/strong> with the minimum element <strong>min<\/strong>.<\/li>\n<\/ul>\n<p>After all the above steps have been executed, we will have our array sorted.<\/p>\n<p><strong>Note:<\/strong> Remember inside the for loop when you are at certain position <strong>i<\/strong>, the subarray left to <strong>i<\/strong>, starting from first position to the (i-1)<sup>th<\/sup> position will be sorted while the subarray right to <strong>i<\/strong> starting from <strong>i<\/strong> to the last index of the array will be unsorted. <\/p>\n<h3>Dry Run For Performing Recursive Selection Sort In Linked List<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2021\/08\/Recursive-selection-sort-for-singly-linked-list-1.png\" alt=\"\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2021\/08\/Recursive-selection-sort-for-singly-linked-list-2.png\" alt=\"\" \/><\/p>\n<p>Now I think from the above explanation, you got a pretty good idea of how the selection sort works.<\/p>\n<p>Let\u2019s see under the approach section how we will use <strong>Recursive Selection Sort<\/strong> to sort a singly linked list.<\/p>\n<h2>Approach For Performing Recursive Selection Sort In Linked List<\/h2>\n<p>Our approach will be simple:<\/p>\n<ul>\n<li>We need to perform recursive sorting (N-1) times, where N is the number of nodes present in the list. The reason we are performing it (N-1) times is that because after recursively sorting the list (N-1) times, (N-1) nodes of the list will be at their correct position as per the sorted linked list (As N-1 nodes are at their correct position so will be the N<sup>th<\/sup> node and hence the final list will be sorted).<\/li>\n<li>Each time, we need to find the minimum node on the right of the current node and then swap the current node with it.<\/li>\n<li>Also remember to store the address of the node just before the minimum valued node because it will help while interchanging links between nodes while swapping.<\/li>\n<\/ul>\n<p>Now, let\u2019s formulate an algorithm based on the approach discussed above and handle the edge cases that might be present while implementing the code.<\/p>\n<h2>Algorithm For Performing Recursive Selection Sort In Linked List<\/h2>\n<ul>\n<li>Base case: When the <strong>current node<\/strong> is the last node of the list, return the node.<\/li>\n<li>Initialize a pointer <strong>min<\/strong> with the current node and pointer <strong>beforemin<\/strong> with NULL. Pointer <strong>min<\/strong> will store the address of the node with the minimum value on the right side of the current node, and <strong>beforemin<\/strong> will store the address of the previous node of <strong>min<\/strong>.<\/li>\n<li>Once we get the <strong>min node<\/strong>, check if it is not the same with the node with which it was initialized. If not, then swap the current node with the min valued node.<\/li>\n<li>Call the same recursive function for the next node and return the <strong>current node<\/strong> once the recursive call is completed.<\/li>\n<\/ul>\n<h2>Code Implementation For Performing Recursive Selection Sort In Linked List<\/h2>\n\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_4483 {\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_4483 .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_4483 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_4483 .wpsm_nav-tabs > li.active > a, #tab_container_4483 .wpsm_nav-tabs > li.active > a:hover, #tab_container_4483 .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_4483 .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_4483 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_4483 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_4483 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_4483 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_4483 .wpsm_nav-tabs > li > a:hover , #tab_container_4483 .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_4483 .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_4483 .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_4483 .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_4483 .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_4483 .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_4483 .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_4483 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_4483 .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_4483 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_4483 .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_4483 .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_4483\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_4483\">\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_4483_1\" aria-controls=\"tabs_desc_4483_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\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_4483\">\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_4483_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<bits\/stdc++.h>\r\nusing namespace std;\r\nclass Node\r\n{\r\n    public:\r\n    int data;\r\n    Node* next;\r\n    Node(int x){\r\n        data = x;\r\n   next = NULL;\r\n    }\r\n};\r\nvoid printList(Node *head)\r\n{\r\n    if (!head)\r\n        return;\r\n     \r\n    while (head->next != NULL)\r\n    {\r\n        cout << head->data << \" -> \";\r\n        head = head->next;\r\n    }\r\n    cout << head->data << endl;\r\n}\r\n \r\nvoid swapNodes(struct Node** head_ref, struct Node* currX,\r\n               struct Node* currY, struct Node* prevY)\r\n{\r\n    \/\/ now the head will be currY\r\n    *head_ref = currY;\r\n \r\n    \/\/ modify the link between prevY and currX\r\n    prevY->next = currX;\r\n \r\n    \/\/ swap both the nodes i.e., currX and currY\r\n    struct Node* temp = currY->next;\r\n    currY->next = currX->next;\r\n    currX->next = temp;\r\n}\r\n \r\n \r\n Node* selectionSort( Node* head)\r\n{\r\n    \/\/ when last node is reached return it\r\n    if (head->next == NULL)\r\n        return head;\r\n \r\n    \/\/ initialize min pointer with current node which will store\r\n    \/\/ address of minimum valued node\r\n     Node* min = head;\r\n \r\n    \/\/ initialize beforeMin pointer with current node which will\r\n    \/\/ store address of previous node pointed by min \r\n     Node* beforeMin = NULL;\r\n     Node* ptr;\r\n \r\n    \/\/ search in right part of list for minimum value\r\n    for (ptr = head; ptr->next != NULL; ptr = ptr->next) {\r\n \r\n        \/\/ if true, then update 'min' and 'beforeMin'\r\n        if (ptr->next->data < min->data) {\r\n            min = ptr->next;\r\n            beforeMin = ptr;\r\n        }\r\n    }\r\n \r\n    \/\/ if min is not same as the current node then\r\n    \/\/ swap the head node with the 'min' node\r\n    if (min != head)\r\n        swapNodes(&head, head, min, beforeMin);\r\n \r\n    \/\/ call the recursive function for rest of the list\r\n    head->next = recurSelectionSort(head->next);\r\n \r\n    return head;\r\n}\r\n \r\nint main(void)\r\n{\r\n    Node* head = NULL;\r\n    head = new Node(2);\r\n    head->next = new Node(1);\r\n    head->next->next = new Node(0);\r\n    head->next->next->next = new Node(10);\r\n    head->next->next->next->next = new Node(3);\r\n    \r\n    Node *tmp = selectionSort(head);\r\n    printList(tmp);\r\n    return 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\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_4483 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_4483 a\"),jQuery(\"#tab-content_4483\"));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>Output<\/strong><\/p>\n<p>0,1,2,3,10<\/p>\n<p><strong>Time Complexity For Performing Recursive Selection Sort In Linked List:<\/strong> O(n<sup>2<\/sup>), where n is the number of nodes in the list.<\/p>\n<p>Hence, we have discussed in detail for performing a recursive selection sort in linked list. Practicing linked list will boost problem solving and logical skills and having knowledge about data structures like linked list also help in the technical interviews, you can follow this link <a href=\"https:\/\/mycode.prepbytes.com\/interview-coding\/practice\/linked-list\">Linked List<\/a>.<\/p>\n<h2>FAQs<\/h2>\n<p><ol><strong><\/p>\n<li>What is the recursive selection sort?<\/li>\n<p><\/strong>Selection Sort is one of the sorting algorithms used to sort data by iterating an array from the beginning and replacing each element with the smallest element in the list. As we move forward the left array is sorted, and the right array is unsorted.<br \/>\n<strong><\/p>\n<li>What is a recursive method?<\/li>\n<p><\/strong>A method or algorithm that invokes itself one or more times with different arguments.<br \/>\n<strong><\/p>\n<li>Why is recursion difficult?<\/li>\n<p><\/strong>The key reason is that we are looking at the same function with different values of local variables. It is very important to make sure which input is currently being used when you are analyzing a recursive function.<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>This blog consists of what is selection sort, dry run for performing selection sort, algorithm and implementation of recursive selection sort in linked list. Let\u2019s discuss recursive selection sort in linked list in detail. How To Perform Recursive Selection Sort In Linked List In this problem, we will be given an unsorted linked list, and [&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":[125],"tags":[],"class_list":["post-4482","post","type-post","status-publish","format-standard","hentry","category-linked-list"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Recursive selection sort for singly linked list | Swapping node links<\/title>\n<meta name=\"description\" content=\"Learn to sort a linked list using selection sort recursively. This blog explains how you can sort a linked list using recursive selection sort.\" \/>\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\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recursive selection sort for singly linked list | Swapping node links\" \/>\n<meta property=\"og:description\" content=\"Learn to sort a linked list using selection sort recursively. This blog explains how you can sort a linked list using recursive selection sort.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/\" \/>\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=\"2021-09-01T11:00:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-14T12:15:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png\" \/>\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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Recursive selection sort for singly linked list | Swapping node links\",\"datePublished\":\"2021-09-01T11:00:26+00:00\",\"dateModified\":\"2022-11-14T12:15:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/\"},\"wordCount\":1013,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png\",\"articleSection\":[\"Linked list articles\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/\",\"name\":\"Recursive selection sort for singly linked list | Swapping node links\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png\",\"datePublished\":\"2021-09-01T11:00:26+00:00\",\"dateModified\":\"2022-11-14T12:15:34+00:00\",\"description\":\"Learn to sort a linked list using selection sort recursively. This blog explains how you can sort a linked list using recursive selection sort.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linked list articles\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/linked-list\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Recursive selection sort for singly linked list | Swapping node links\"}]},{\"@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":"Recursive selection sort for singly linked list | Swapping node links","description":"Learn to sort a linked list using selection sort recursively. This blog explains how you can sort a linked list using recursive selection sort.","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\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/","og_locale":"en_US","og_type":"article","og_title":"Recursive selection sort for singly linked list | Swapping node links","og_description":"Learn to sort a linked list using selection sort recursively. This blog explains how you can sort a linked list using recursive selection sort.","og_url":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2021-09-01T11:00:26+00:00","article_modified_time":"2022-11-14T12:15:34+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Recursive selection sort for singly linked list | Swapping node links","datePublished":"2021-09-01T11:00:26+00:00","dateModified":"2022-11-14T12:15:34+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/"},"wordCount":1013,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png","articleSection":["Linked list articles"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/","url":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/","name":"Recursive selection sort for singly linked list | Swapping node links","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png","datePublished":"2021-09-01T11:00:26+00:00","dateModified":"2022-11-14T12:15:34+00:00","description":"Learn to sort a linked list using selection sort recursively. This blog explains how you can sort a linked list using recursive selection sort.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1644922725454-101.Recursive%20selection%20sort%20for_Artboard%202.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/recursive-selection-sort-for-singly-linked-list-swapping-node-links\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Linked list articles","item":"https:\/\/prepbytes.com\/blog\/category\/linked-list\/"},{"@type":"ListItem","position":3,"name":"Recursive selection sort for singly linked list | Swapping node links"}]},{"@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\/4482","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=4482"}],"version-history":[{"count":9,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/4482\/revisions"}],"predecessor-version":[{"id":10469,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/4482\/revisions\/10469"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=4482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=4482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=4482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}