冒泡排序、选择排序、插入排序 | JavaScript 中的数据结构和算法

冒泡排序、选择排序、插入排序 | javascript 中的数据结构和算法

排序算法是许多计算任务的支柱,在组织数据以实现高效访问和处理方面发挥着至关重要的作用。无论您是刚刚开始探索算法世界的初学者,还是希望刷新知识的经验丰富的开发人员,了解这些基本排序技术都是至关重要的。在这篇文章中,我们将探讨一些更基本的排序算法 – 冒泡排序、选择排序和插入排序。

冒泡排序

冒泡排序是一种简单的、基于比较的排序算法。它重复遍历列表,比较相邻元素,如果顺序错误则交换它们。这个过程一直持续到不再需要交换为止,表明列表已排序。虽然冒泡排序易于理解和实现,但对于大型数据集来说效率较低,因此它主要适用于教育目的和小型数据集。

冒泡排序的时间复杂度为o(n2).

// a random array of 20 numbersconst inputarray = [34, 100, 23, 45, 67, 89, 12, 56, 78, 90, 23, 45, 67, 89, 12, 56, 78, 90, 23, 45]function bubblesort (input) {  const n = input.length  const sortedarray = [...input]  // loop n times  for (let i = 0; i < n; i++) {    // loop through all n-1 pairs    for (let j = 0; j  b, swap; else do nothing      if (sortedarray[j] > sortedarray[j+1]) {        const temp = sortedarray[j]        sortedarray[j] = sortedarray[j+1]        sortedarray[j+1] = temp      }    }  }  return sortedarray}console.log("input:", inputarray)console.log("ouput:", bubblesort(inputarray))

登录后复制

选择排序

选择排序是一种简单的、基于比较的排序算法。它的工作原理是将列表分为已排序区域和未排序区域。它反复从未排序区域中选择最小(或最大)元素,并将其与第一个未排序元素交换,逐渐增大排序区域。选择排序对于大型数据集来说并不是最有效的,但很容易理解,并且具有最小化交换次数的优点。

选择排序的时间复杂度为 o(n2).

// a random array of 20 numbersconst inputarray = [34, 100, 23, 45, 67, 89, 12, 56, 78, 90, 23, 45, 67, 89, 12, 56, 78, 90, 23, 45]function selectionsort (input) {  const n = input.length  const sortedarray = [...input]  // loop n times  for (let i = 0; i < n; i++) {    // start from i'th position    let lowestnumberindex = i    for (let j = i; j < n-1; j++) {      // identify lowest number      if (sortedarray[j] < sortedarray[lowestnumberindex]) {        lowestnumberindex = j      }    }    // swap the lowest number with that in i'th position    const temp = sortedarray[i]    sortedarray[i] = sortedarray[lowestnumberindex]    sortedarray[lowestnumberindex] = temp  }  return sortedarray}console.log("input:", inputarray)console.log("ouput:", selectionsort(inputarray))

登录后复制

插入排序

插入排序是一种直观的、基于比较的排序算法,一次构建一个元素的最终排序列表。它的工作原理是从列表的未排序部分中获取元素并将它们插入到已排序部分中的正确位置。插入排序对于小型数据集或接近排序的数据非常有效,并且在实际应用中经常用作更复杂算法的更简单替代方案。

立即学习“Java免费学习笔记(深入)”;

插入排序的时间复杂度为o(n2).

function insertionSort (input) {  const n = input.length  const sortedArray = [...input]  // loop n times, starting at index 1  for (let i = 1; i = 0; j--) {      // if number in current index is larger than compared number, swap      if (sortedArray[j] > comparedNumber) {        sortedArray[tempIndex] = sortedArray[j]        sortedArray[j] = comparedNumber        tempIndex = j      } else {        // OPTIONAL: else exit        break      }    }  }  return sortedArray}console.log("Input:", inputArray)console.log("Ouput:", insertionSort(inputArray))

登录后复制

总结

虽然冒泡排序、选择排序和插入排序等基本排序算法对于大型数据集可能不是最有效的,但它们为理解算法设计提供了良好的基础。如果您觉得这篇文章有帮助,我很想听听您的想法。在下面发表评论,分享您的见解,或提出您的任何问题 – 我会尽力回答。

编码愉快!

以上就是冒泡排序、选择排序、插入排序 | JavaScript 中的数据结构和算法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2669684.html

(0)
上一篇 2025年3月7日 12:48:30
下一篇 2025年3月7日 12:48:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 揭秘合并排序:分治排序初学者指南

    归并排序由约翰·冯·诺依曼于 1945 年提出,主要是为了提高大型数据集的排序效率。冯·诺依曼的算法旨在使用分而治之的方法提供一致且可预测的排序过程。这种策略允许归并排序有效地处理小型和大型数据集,保证在所有情况下都能实现稳定的排序,时间复…

    2025年3月7日
    200
  • DSA 与 JS:用 JavaScript 解释大 O 表示法

    废话不多说,我们直接进入正题吧。什么是大 o 表示法以及它的用途是什么?明确的答案是 big o 表示法是一种描述算法性能如何随着输入大小的增长而变化的方法。它可以帮助您了解处理越来越大的数据量时代码的速度有多快或多慢。 简单来说,big …

    2025年3月7日
    200
  • 为初学者回顾一下使用 JavaScript 的排序算法的亮点

    排序算法是用于按特定顺序(通常是数字顺序或字典顺序)排列列表或数组元素的方法。它们是计算机科学中有效组织数据的基础。这是理解如何将问题分解为步骤然后实现这些步骤的练习,即如何创建算法。这也是一种认识到解决问题的方法有多种,并且有些方法优于其…

    2025年3月7日
    200
  • 使用html css和js的动画进行冒泡排序

    代码 : Bubble Sort Animation body { display: flex; flex-direction: column; justify-content: center; align-items: center; b…

    2025年3月7日
    200
  • 如何学习DSA(数据结构与算法)? – 完整指南

    学习数据结构和算法(DSA)对于任何想要成为熟练软件开发人员或旨在破解顶级科技公司编码面试的人来说都是必不可少的一步。 DSA 为高效解决复杂问题奠定了基础,对于开发优化和可扩展的应用程序至关重要。在本指南中,我们将探讨掌握 DSA 所需了…

    2025年3月7日
    200
  • JavaScript 数组排序() 和冒泡排序!

    javascript sort() 方法默认按字母顺序排列数组元素,并将它们视为字符串。数值排序需要自定义比较函数,让您可以控制排序标准,实现精准高效的整理。 语法: arr.sort(comparefunction); 登录后复制 参数:…

    2025年3月7日
    200
  • js算法如何写

    JavaScript 算法是解决计算问题的步骤序列,具有正确性、效率、可读性和鲁棒性。常见的算法包括排序算法(冒泡排序、快速排序)、搜索算法(线性搜索、二分搜索)、字符操作、数学算法和图像处理算法。编写 JavaScript 算法时,应先定…

    2025年3月7日
    200
  • 健壮代码的基本 JavaScript 测试技术

    javascript 测试是软件开发的一个重要方面,可确保代码的可靠性和健壮性。作为一名开发人员,我发现实施全面的测试策略不仅可以尽早发现错误,还可以提高应用程序的整体质量。让我们探索五种基本的 javascript 测试技术,这些技术在我…

    2025年3月7日
    200
  • 大 O 符号

    它是一种表示法,决定算法运行的速度有多快或多慢。这个速度不是由秒决定的,而是由算法的运行时间随着元素的增加而增加多少决定的。 大o是时间和大小的关系。在整篇文章中,您将看到包含这些度量的图表,并且您将在实践中更好地理解它们。我们有两种类型的…

    2025年3月7日 编程技术
    200
  • 了解冒泡排序算法:分步指南

    图片来源:medium 排序是数据结构和算法中最重要的部分之一。排序算法有很多种,这是最简单的算法之一:冒泡排序。 排序算法是计算机科学的基础,而冒泡排序是最简单、最直观的排序算法之一。这篇文章将探讨冒泡排序的工作原理,分析其时间复杂度,并…

    2025年3月7日
    200

发表回复

登录后才能评论