{"id":9766,"date":"2025-08-29T15:19:43","date_gmt":"2025-08-29T09:49:43","guid":{"rendered":"https:\/\/namastedev.com\/blog\/?p=9766"},"modified":"2025-10-22T20:25:59","modified_gmt":"2025-10-22T14:55:59","slug":"selection-sort_","status":"publish","type":"post","link":"https:\/\/namastedev.com\/blog\/selection-sort_\/","title":{"rendered":"Selection Sort"},"content":{"rendered":"\n<!-- Sum of all numbers in array using Recursion 1 -->\n<link\n    href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/themes\/prism-tomorrow.min.css\"\n    rel=\"stylesheet\"\n\/>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/prism.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/autoloader\/prism-autoloader.min.js\"><\/script>\n\n<style>\n.wp_blog_theme {\n  --primary: #E58C32;\n  --secondary: #030302;\n  --light-bg: #fef9f4;\n  --text-dark: #2d2d2d;\n  --tab-radius: 12px;\n  --shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n  --code-bg: #001f3f;\n  --code-text: #d4f1ff;\n}\n\n.wp_blog_container {\n  font-family: 'Segoe UI', sans-serif;\n  background: var(--light-bg);\n  margin: 0;\n  padding: 0;\n  color: var(--text-dark);\n}\n\n\/* Heading *\/\n.wp_blog_main-heading {\n  text-align: center;\n  font-size: 2.4rem;\n  color: var(--primary);\n  margin-top: 2.5rem;\n  font-weight: bold;\n}\n\n\/* Explanation Card *\/\n.wp_blog_explanation,\n.wp_blog_code-tabs-container {\n  max-width: 940px;\n  margin: 2rem auto;\n  padding: 2rem;\n  background: white;\n  border-radius: var(--tab-radius);\n  box-shadow: var(--shadow);\n}\n\n\/* Text and Visuals *\/\n.wp_blog_explanation h2 {\n  font-size: 1.4rem;\n  color: var(--primary);\n  margin-bottom: 0.5rem;\n}\n\n.wp_blog_explanation p,\n.wp_blog_explanation li {\n  font-size: 1.05rem;\n  line-height: 1.7;\n  margin: 0.5rem 0;\n}\n\n.wp_blog_explanation code {\n  background: #fef9f4;   \/* light bg instead of dark blue *\/\n  color: #E58C32;        \/* brand orange *\/\n  padding: 3px 6px;\n  border-radius: 4px;\n  font-family: 'Courier New', monospace;\n  font-weight: 600;      \/* optional, makes it pop *\/\n}\n\n.wp_blog_explanation img {\n  max-width: 100%;\n  border-radius: var(--tab-radius);\n  margin-top: 1rem;\n  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);\n}\n\n\/* Tab Buttons *\/\n.wp_blog_code-tabs-header {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.5rem;\n  margin-bottom: 1rem;\n}\n\n.wp_blog_code-tab-button {\n  padding: 0.6rem 1.2rem;\n  border: 1px solid var(--primary);\n  background: white;\n  color: var(--primary);\n  border-radius: 50px;\n  font-weight: 600;\n  cursor: pointer;\n  transition: all 0.3s ease;\n}\n\n.wp_blog_code-tab-button:hover {\n  background: var(--secondary);\n}\n\n.wp_blog_code-tab-button.active {\n  background: var(--primary);\n  color: white;\n}\n\n\/* Code Content *\/\n.wp_blog_code-tab-content {\n  display: none;\n  background: var(--code-bg);\n  border-radius: var(--tab-radius);\n}\n\n.wp_blog_code-tab-content.active {\n  display: block;\n}\n\n.wp_blog_code-tab-content pre {\n  margin: 0;\n  padding: 1.5rem;\n  font-size: 1rem;\n  overflow-x: auto;\n  background: var(--code-bg);\n  border-radius: var(--tab-radius);\n  color: var(--code-text);\n}\n\n\/* Dark mode variables *\/\n.wp_blog_theme.dark-mode {\n  --light-bg: #121212;\n  --text-dark: #f5f5f5;\n  --shadow: 0 4px 12px rgba(255, 255, 255, 0.08);\n  --code-bg: #1e1e1e;\n  --code-text: #c5f0ff;\n}\n\n.wp_blog_theme.dark-mode .wp_blog_explanation {\n  background: #1e1e1e;\n}\n\n\/* Dark mode code highlight *\/\n.wp_blog_theme.dark-mode .wp_blog_explanation code {\n  background: #333;\n  color: #ffd27f;\n}\n\n.wp_blog_theme {\n  position: relative; \/* makes it the reference for absolute children *\/\n}\n\n.wp_blog_toggle-btn {\n  position: absolute;\n  top: 1rem;\n  right: 1rem;\n  z-index: 9999;\n  padding: 0.5rem 0.8rem;\n  border-radius: 10%;\n  background: var(--primary);\n  color: white;\n  font-weight: bold;\n  cursor: pointer;\n  border: none;\n  box-shadow: var(--shadow);\n  transition: background 0.3s, transform 0.2s;\n}\n\n.wp_blog_toggle-btn:hover {\n  background: #cc772e;\n}\n\n.wp_blog_theme.dark-mode .wp_blog_code-tabs-container {\n  background: #1e1e1e;\n}\n<\/style>\n\n<div class=\"wp_blog_container wp_blog_theme\">\n<button id=\"blogNotesThemeToggle\" class=\"wp_blog_toggle-btn\">\ud83c\udf19<\/button>\n<h1 class=\"wp_blog_main-heading\"><\/h1>\n\n<div class=\"wp_blog_explanation\">\n\n    <h2>Selection Sort<\/h2>\n    <ul>\n        <li><strong>Selection Sort<\/strong> is a <code>simple comparison-based<\/code> sorting algorithm.<\/li>\n        <li>It divides the array into <code>two parts<\/code>: a <strong>sorted subarray<\/strong> and an <strong>unsorted subarray<\/strong>.<\/li>\n        <li>Initially, the <strong>sorted part is empty<\/strong>, and the unsorted part is the entire array. <\/li>\n        <li>In <code>each iteration<\/code>, it finds the minimum element from the <strong>unsorted part<\/strong> and moves it to the end of the <code>sorted part<\/code>.<\/li>\n    <\/ul>\n    <h2>Example 1:<\/h2>\n    <p><strong>Input:<\/strong> [4, 5, 1, 3, 9]<\/p>\n    <p><strong>Output:<\/strong> [1, 3, 4, 5, 9]<\/p>\n\n    <!-- <h2>Example 2:<\/h2>\n    <p><strong>Input:<\/strong> arr = [6, 8, 0, 3]<\/p>\n    <p><strong>Output:<\/strong> -1<\/p>\n    <p><strong>Explanation: <\/strong>5 is not present in the array<\/p>\n -->\n\n    <h2>Approach:<\/h2>\n    <ul>\n        <li><strong>Iterate<\/strong> over the array from index <code>0<\/code> to <code>n-2<\/code>.<\/li>\n        <li><strong>For each index<\/strong> <code>i<\/code>, assume the element at <code>i<\/code> is the <code>minimum<\/code> in the <strong>unsorted part<\/strong>.<\/li>\n        <li>Run an inner loop from <code>j = i+1 to n-1<\/code> to find the actual minimum element.<\/li>\n        <li>If a smaller element is found, update the <code>min index<\/code>.<\/li>\n        <li>After the <strong>inner loop, swap the element<\/strong> at <code>i<\/code> with the element at min (if they\u2019re not the same).<\/li>\n        <li><code>Repeat<\/code> until the <strong>array is sorted<\/strong>.<\/li>\n    <\/ul>\n\n    <h2>Time &#038; Space Complexity:<\/h2>\n    <p><strong>Time Complexity: O(n<sup>2<\/sup>) <\/strong> In all cases <code>best, average and worst<\/code>.<\/p>\n    <p>Roughly <code>n*(n-1)\/2<\/code> comparisons are always performed.<\/p>\n    <p><strong>Space Complexity: O(1)<\/strong>  Selection Sort is an in-place sorting algorithm, so it doesn\u2019t require extra space.<\/p>\n\n\n<h2>Dry Run<\/h2>\n<div style=\"background: var(--light-bg); border-left: 4px solid var(--primary); padding: 1rem; border-radius: var(--tab-radius); margin: 1rem 0; color: var(--text-dark);\">\n  <p><strong>Input:<\/strong> <code>arr = [4, 5, 1, 3, 9]<\/code><\/p>\n  <pre style=\"white-space: pre-wrap; background: var(--code-bg); padding: 1rem; border-radius: 8px; overflow-x: auto; color: var(--code-text);\">\ni = 0 \u2192 min_idx = 0\n   j = 1 \u2192 arr[1] = 5 > arr[0] = 4 \u2192 no change\n   j = 2 \u2192 arr[2] = 1 < arr[0] = 4 \u2192 min_idx = 2\n   j = 3 \u2192 arr[3] = 3 > arr[2] = 1 \u2192 no change\n   j = 4 \u2192 arr[4] = 9 > arr[2] = 1 \u2192 no change\n   swap arr[0] \u2194 arr[2] \u2192 [1, 5, 4, 3, 9]\n\ni = 1 \u2192 min_idx = 1\n   j = 2 \u2192 arr[2] = 4 < arr[1] = 5 \u2192 min_idx = 2\n   j = 3 \u2192 arr[3] = 3 < arr[2] = 4 \u2192 min_idx = 3\n   j = 4 \u2192 arr[4] = 9 > arr[3] = 3 \u2192 no change\n   swap arr[1] \u2194 arr[3] \u2192 [1, 3, 4, 5, 9]\n\ni = 2 \u2192 min_idx = 2\n   j = 3 \u2192 arr[3] = 5 > arr[2] = 4 \u2192 no change\n   j = 4 \u2192 arr[4] = 9 > arr[2] = 4 \u2192 no change\n   no swap \u2192 [1, 3, 4, 5, 9]\n\ni = 3 \u2192 min_idx = 3\n   j = 4 \u2192 arr[4] = 9 > arr[3] = 5 \u2192 no change\n   no swap \u2192 [1, 3, 4, 5, 9]\n\n<strong>Final Sorted Array:<\/strong> [1, 3, 4, 5, 9]\n  <\/pre>\n<\/div>\n<\/div>\n\n\n<div class=\"wp_blog_code-tabs-container\">\n    <div class=\"wp_blog_code-tabs-header\">\n        <button class=\"wp_blog_code-tab-button active\" data-lang=\"js\">\n            JavaScript\n        <\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"py\">Python<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"java\">Java<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"cpp\">C++<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"c\">C<\/button>\n        <button class=\"wp_blog_code-tab-button\" data-lang=\"cs\">C#<\/button>\n    <\/div>\n\n    <div class=\"wp_blog_code-tab-content active\" data-lang=\"js\">\n        <pre><code class=\"language-javascript\">\n let arr = [4, 5, 1, 3, 9];\n  \n  function selectionSort(arr) {\n    let n = arr.length;\n    for (let i = 0; i < n - 1; i++) {\n      let min = i;\n      for (let j = i + 1; j < n; j++) {\n        if (arr[j] < arr[min]) {\n          min = j;\n        }\n      }\n      if (min != i) {\n        let temp = arr[i];\n        arr[i] = arr[min];\n        arr[min] = temp;\n      }\n    }\n    return arr;\n  }\n  \n  let result = selectionSort(arr);\n  console.log(\"Sorted array\", result);\n      \n      \n    <\/code><\/pre>\n    <\/div>\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"py\">\n        <pre><code class=\"language-python\">\ndef selectionSort(arr):\n      n = len(arr)\n      for i in range(n - 1):\n          min_idx = i\n          for j in range(i + 1, n):\n              if arr[j] < arr[min_idx]:\n                  min_idx = j\n          if min_idx != i:\n              arr[i], arr[min_idx] = arr[min_idx], arr[i]\n      return arr\n  \n  arr = [4, 5, 1, 3, 9]\n  print(\"Sorted array\", selectionSort(arr))\n      \n    <\/code><\/pre>\n    <\/div>\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"java\">\n        <pre><code class=\"language-java\">\n public class Main {\n    public static void selectionSort(int[] arr) {\n      int n = arr.length;\n      for (int i = 0; i < n - 1; i++) {\n        int min = i;\n        for (int j = i + 1; j < n; j++) {\n          if (arr[j] < arr[min]) {\n            min = j;\n          }\n        }\n        if (min != i) {\n          int temp = arr[i];\n          arr[i] = arr[min];\n          arr[min] = temp;\n        }\n      }\n    }\n  \n    public static void main(String[] args) {\n      int[] arr = {4, 5, 1, 3, 9};\n      selectionSort(arr);\n      for (int num : arr) {\n        System.out.print(num + \" \");\n      }\n    }\n  }\n<\/code><\/pre>\n    <\/div>\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"cpp\">\n        <pre><code class=\"language-cpp\">\n#include &lt;iostream&gt;\n <!-- #include <iostream> -->\nusing namespace std;\n  \n  void selectionSort(int arr[], int n) {\n    for (int i = 0; i < n - 1; i++) {\n      int min = i;\n      for (int j = i + 1; j < n; j++) {\n        if (arr[j] < arr[min]) {\n          min = j;\n        }\n      }\n      if (min != i) {\n        int temp = arr[i];\n        arr[i] = arr[min];\n        arr[min] = temp;\n      }\n    }\n  }\n  \n  int main() {\n    int arr[] = {4, 5, 1, 3, 9};\n    int n = sizeof(arr) \/ sizeof(arr[0]);\n    selectionSort(arr, n);\n    for (int i = 0; i < n; i++) {\n      cout << arr[i] << \" \";\n    }\n    return 0;\n  }\n      \n    <\/code><\/pre>\n    <\/div>\n\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"c\">\n        <pre><code class=\"language-c\">\n#include &lt;stdio.h&gt;\n\n void selectionSort(int arr[], int n) {\n    for (int i = 0; i < n - 1; i++) {\n      int min = i;\n      for (int j = i + 1; j < n; j++) {\n        if (arr[j] < arr[min]) {\n          min = j;\n        }\n      }\n      if (min != i) {\n        int temp = arr[i];\n        arr[i] = arr[min];\n        arr[min] = temp;\n      }\n    }\n  }\n  \n  int main() {\n    int arr[] = {4, 5, 1, 3, 9};\n    int n = sizeof(arr) \/ sizeof(arr[0]);\n    selectionSort(arr, n);\n    for (int i = 0; i < n; i++) {\n      printf(\"%d \", arr[i]);\n    }\n    return 0;\n  }\n      \n     \n<\/code><\/pre>\n    <\/div>\n    <div class=\"wp_blog_code-tab-content\" data-lang=\"cs\">\n        <pre><code class=\"language-csharp\">\nusing System;\nclass Program\n{\n    static int LinearSearch(int[] arr, int target)\n    {\n        for (int i = 0; i < arr.Length; i++)\n        {\n            if (arr[i] == target)\n            {\n                return i;\n            }\n        }\n        return -1;\n    }\n    static void Main()\n    {\n        int[] arr = { 4, 5, 1, 3, 9 };\n        int result = LinearSearch(arr, 5);\n        Console.WriteLine(\"Element found at index \" + result);\n    }\n}\n<\/code><\/pre>\n    <\/div>\n<\/div>\n<\/div>\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const buttons = document.querySelectorAll(\".wp_blog_code-tab-button\");\n  const contents = document.querySelectorAll(\".wp_blog_code-tab-content\");\n\n  buttons.forEach((button) => {\n    button.addEventListener(\"click\", () => {\n      const lang = button.getAttribute(\"data-lang\");\n\n      buttons.forEach((btn) => btn.classList.remove(\"active\"));\n      contents.forEach((content) => content.classList.remove(\"active\"));\n\n      button.classList.add(\"active\");\n      document\n        .querySelector(`.wp_blog_code-tab-content[data-lang=\"${lang}\"]`)\n        .classList.add(\"active\");\n    });\n  });\n\n  const themeToggle = document.getElementById(\"blogNotesThemeToggle\");\n  const themeContainer = document.querySelector(\".wp_blog_theme\");\n\n  themeToggle.addEventListener(\"click\", () => {\n    themeContainer.classList.toggle(\"dark-mode\");\n    themeToggle.textContent =\n      themeContainer.classList.contains(\"dark-mode\") ? \"\u2600\ufe0f\" : \"\ud83c\udf19\";\n  });\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udf19 Selection Sort Selection Sort is a simple comparison-based sorting algorithm. It divides the array into two parts: a sorted subarray and an unsorted subarray. Initially, the sorted part is empty, and the unsorted part is the entire array. In each iteration, it finds the minimum element from the unsorted part and moves it to<\/p>\n","protected":false},"author":108,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[210,322,176,175,211,811,810,174,172,173],"tags":[],"class_list":{"0":"post-9766","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-algorithms","7":"category-algorithms-and-data-structures","8":"category-csharp","9":"category-cplusplus","10":"category-data-structures","11":"category-data-structures-and-algorithms","12":"category-dsa","13":"category-java","14":"category-javascript","15":"category-python"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/users\/108"}],"replies":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/comments?post=9766"}],"version-history":[{"count":3,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9766\/revisions"}],"predecessor-version":[{"id":10545,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/9766\/revisions\/10545"}],"wp:attachment":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/media?parent=9766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/categories?post=9766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/tags?post=9766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}