JavaScript算法学习之冒泡排序和选择排序

JavaScript算法学习之冒泡排序和选择排序

冒泡排序和选择排序是常见的两种排序算法。在本文中,我们将详细讲解这两种排序算法,并提供代码示例供读者参考。

冒泡排序

冒泡排序是一种简单的排序算法,它通过比较相邻两个元素的大小,依次将最大的元素冒泡到数组的末尾。

以下是冒泡排序的代码示例:

function bubbleSort(array) {
  const len = array.length;
  for (let i = 0; i < len - 1; i++) {
    for (let j = 0; j < len - i - 1; j++) {
      if (array[j] > array[j + 1]) {
        [array[j], array[j + 1]] = [array[j + 1], array[j]];
      }
    }
  }
  return array;
}

const arr = [3, 5, 1, 4, 2];
console.log(bubbleSort(arr)); // [1, 2, 3, 4, 5]

在上述代码中,我们使用了两个循环来实现冒泡排序。外层循环执行 n - 1 次(其中 n 为数组的长度),每次循环都会确定一个最大值。内层循环用来比较相邻两个元素的大小,如果前面的元素比后面的元素大,则交换它们的位置。

选择排序

选择排序是一种简单的排序算法,它每次从数组中选择一个最小的元素,并将其与数组的第一个元素交换位置。然后,再从剩余的元素中选择一个最小的元素,并将它与数组的第二个元素交换位置,以此类推。

以下是选择排序的代码示例:

function selectionSort(array) {
  const len = array.length;
  let minIndex;
  for (let i = 0; i < len - 1; i++) {
    minIndex = i;
    for (let j = i + 1; j < len; j++) {
      if (array[minIndex] > array[j]) {
        minIndex = j;
      }
    }
    [array[i], array[minIndex]] = [array[minIndex], array[i]];
  }
  return array;
}

const arr = [3, 5, 1, 4, 2];
console.log(selectionSort(arr)); // [1, 2, 3, 4, 5]

在上述代码中,我们使用了两个循环来实现选择排序。外层循环执行 n - 1 次(其中 n 为数组的长度),每次循环都会确定一个最小值的索引位置。内层循环用来寻找最小值的索引位置,然后将最小值与当前位置进行交换。

以上就是冒泡排序和选择排序的详细讲解和代码示例。大家可以根据这些示例进行练习,并深入研究算法的实现方式和优化方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript算法学习之冒泡排序和选择排序 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JavaScript实现经典排序算法之冒泡排序

    JavaScript实现经典排序算法之冒泡排序 什么是冒泡排序? 冒泡排序是一种简单的排序算法,从序列左侧开始比较两个相邻的元素,如果顺序不对就交换位置,直到序列末尾,这样一次遍历后,序列最后一个元素就是当前序列最大值。然后对剩余序列重复上述过程,直到整个序列有序。 算法实现 我们来看看如何用JavaScript实现冒泡排序。 function bubble…

    算法与数据结构 2023年5月19日
    00
  • Java冒泡排序法和选择排序法的实现

    Java的冒泡排序法和选择排序法都是常用的排序算法,冒泡排序法和选择排序法的原理都很简单,但是实现方法有一些区别。 冒泡排序法 冒泡排序法的原理是通过不断交换相邻的元素,比较他们的大小,将大的数不断上移或者将小的数下移,直到整个序列排好顺序。 以下是Java实现冒泡排序法的代码: public class BubbleSort { public static…

    算法与数据结构 2023年5月19日
    00
  • JS排序之选择排序详解

    JS排序之选择排序详解 选择排序简介 选择排序,就是每一次在未排序的元素中选择最小(或最大)的一个元素,放在已排序的元素的末尾,直到所有元素都排好序。 首先,我们要明白选择排序的核心思想。这种排序方式并不是两两交换位置,而是在遍历整个待排序的序列中先找到最小的元素,放在正确的位置,然后再从剩余的未排序元素中继续寻找最小的元素,放在已排序序列的末尾,依次类推,…

    算法与数据结构 2023年5月19日
    00
  • 归并排序时间复杂度过程推导详解

    归并排序时间复杂度过程推导详解 什么是归并排序 归并排序是一种基于分治思想的排序算法,将一个无序的数组划分成若干子数组,对每个子数组进行排序,然后再将排好序的子数组进行合并,最终得到一个完整有序的数组。 归并排序的时间复杂度 归并排序的时间复杂度是O(nlogn),其中n表示数组的长度。接下来我们将详细讲解归并排序的时间复杂度推导过程。 假设有一个长度为n的…

    算法与数据结构 2023年5月19日
    00
  • Python实现二维有序数组查找的方法

    首先,我们需要了解什么是二维有序数组。二维有序数组,也叫做二维矩阵,是一个含有 m 行 n 列的矩阵,每行每列都是有序的。在这个二维有序数组中,我们需要实现一个二分查找算法,用来查找某个目标值是否存在于这个矩阵中。 以下是步骤: 1. 将二维矩阵转换为一维数组 由于二维矩阵每一行每一列都是有序的,我们可以将二维矩阵看成一个一维数组,即将每一行连在上一行的后面…

    算法与数据结构 2023年5月19日
    00
  • PHP rsa加密解密算法原理解析

    PHP RSA加密解密算法原理解析 RSA是一种非对称加密算法,它使用两个密钥:公钥和私钥。公钥可以向外公开,用于加密数据;而私钥只由数据的持有者保管,用于解密数据。在本文中,我们会使用PHP实现RSA加密解密算法,并分享一些示例代码。 RSA加密解密算法原理 RSA加密解密算法的原理主要是基于数学中的大数分解问题和欧拉定理。以下是RSA算法的一般流程: 用…

    算法与数据结构 2023年5月19日
    00
  • go实现冒泡排序算法

    下面是详细讲解Go语言实现冒泡排序算法的完整攻略: 1. 什么是冒泡排序? 冒泡排序是一种基于交换的排序算法,算法通过比较相邻的元素,将比较大的元素交换到后面,从而达到排序的目的。这个过程就像是水中不断上冒的气泡,因此称之为冒泡排序。 冒泡排序是经典的排序算法之一,它虽然时间复杂度高达 O(n^2),但其思想简单,易于理解和实现,并且在某些特殊的情况下,它的…

    算法与数据结构 2023年5月19日
    00
  • 快速排序算法在Swift编程中的几种代码实现示例

    让我为您详细讲解“快速排序算法在Swift编程中的几种代码实现示例”的完整攻略。 快速排序算法简介 快速排序是一种常用的排序算法,其基本思想是通过一个枢轴(pivot)将待排序数组分成两个部分,一部分小于枢轴,一部分大于枢轴,然后对这两个部分进行递归排序,最终得到一个有序的数组。 快速排序算法实现 下面是三种在Swift编程中实现快速排序算法的代码示例。 代…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部