JS实现的冒泡排序,快速排序,插入排序算法示例

为了给大家更好的理解,这里先介绍一下这三种排序算法的基本思想:

  1. 冒泡排序:依次比较相邻两个元素的大小,将较大的元素往后移动,每一轮比较都可以确定一个最大的元素,因此需要进行N-1轮。

  2. 快速排序:选定一个中心点,将小于这个中心点的元素排在左边,大于这个中心点的元素排在右边,然后分别对左右两边的元素重复这个操作。

  3. 插入排序:将数组按升序排列,一次将每个元素插入到已经排好序的子数组中的适当位置。

现在我们分别来看一下这三种排序算法的具体实现方式的示例:

冒泡排序算法示例

function bubbleSort(arr) {
  var len = arr.length;
  for (var i = 0; i < len - 1; i++) {
    for (var j = 0; j < len - i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        var temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}

我们可以通过调用bubbleSort函数来使用这个算法:

var arr = [3, 2, 1, 5, 4];
var sortedArr = bubbleSort(arr);
console.log(sortedArr); // 输出 [1,2,3,4,5]

在这个例子中,我们将数组[3,2,1,5,4]通过bubbleSort函数进行排序,最终得到了[1,2,3,4,5]这样一个已排好序的数组。

快速排序算法示例

function quickSort(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
}

我们可以通过调用quickSort函数来使用这个算法:

var arr = [3, 2, 1, 5, 4];
var sortedArr = quickSort(arr);
console.log(sortedArr); // 输出 [1,2,3,4,5]

在这个例子中,我们将数组[3,2,1,5,4]通过quickSort函数进行排序,最终得到了[1,2,3,4,5]这样一个已排好序的数组。

插入排序算法示例

function insertionSort(arr) {
  var len = arr.length;
  for (var i = 1; i < len; i++) {
    var key = arr[i];
    var j = i - 1;
    while (j >= 0 && arr[j] > key) {
      arr[j + 1] = arr[j];
      j--;
    }
    arr[j + 1] = key;
  }
  return arr;
}

我们可以通过调用insertionSort函数来使用这个算法:

var arr = [3, 2, 1, 5, 4];
var sortedArr = insertionSort(arr);
console.log(sortedArr); // 输出 [1,2,3,4,5]

在这个例子中,我们将数组[3,2,1,5,4]通过insertionSort函数进行排序,最终得到了[1,2,3,4,5]这样一个已排好序的数组。

以上三个排序算法都是常用的基本排序算法,可以有效帮助开发者解决排序问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现的冒泡排序,快速排序,插入排序算法示例 - Python技术站

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

相关文章

  • MySQL order by与group by查询优化实现详解

    MySQL的order by与group by是常用的查询优化手段,本篇攻略将详细讲解order by与group by的使用方法及其优化实现。 1. MySQL Order By MySQL Order By 用于对查询结果进行排序,将查询结果按照指定字段的顺序进行排列 ,默认升序排序,也可以指定为降序排序。 SELECT column1, column2…

    算法与数据结构 2023年5月19日
    00
  • 基于Go语言实现冒泡排序算法

    基于Go语言实现冒泡排序算法 什么是冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行,因而得名“冒泡排序”。该算法因其简单的实现方式和易于理解的原理而广泛应用。 冒泡排序算法实现方式 冒泡排序的算法原理如下: 比较相邻的元素。如果第一个…

    算法与数据结构 2023年5月19日
    00
  • 如何用JavaScript学习算法复杂度

    下面是关于如何用JavaScript学习算法复杂度的完整攻略: 1. 什么是算法复杂度? 算法复杂度指的是算法运行时间与输入数据规模之间的关系。通常使用大O表示法来表示算法的时间复杂度,即在最坏情况下,算法需要执行的基本操作次数和输入规模n的关系。从时间复杂度的角度出发,我们可以比较不同的算法及其优劣。 2. JavaScript中如何编写算法 JavaSc…

    算法与数据结构 2023年5月19日
    00
  • c++ 快速排序算法【过程图解】

    C++ 快速排序算法【过程图解】 快速排序是一种常用的排序算法,其基本原理是通过分治的思想将待排序序列分成若干子序列,使得每个子序列都是有序的。具体实现时,首先选择一定的元素作为基准值,然后将比基准值小的元素全部放在基准值的左边,比基准值大的元素全部放在基准值的右边,这样就将序列分成了分别包含较小元素和较大元素的两个子序列。然后,递归地对子序列进行排序,最终…

    算法与数据结构 2023年5月19日
    00
  • 全排列算法的非递归实现与递归实现的方法(C++)

    全排列算法是计算机科学领域中的一个经典问题,其功能是对给定的一组数进行全排列。在本文中,我们将对该算法的非递归实现和递归实现方法进行详细讲解。本文的代码示例基于C++语言。 非递归实现方法 算法思路 假设我们想对n个数进行全排列,那么我们可以首先将这n个数按照升序排列,然后使用以下步骤: 把这n个数的全排列问题转化为n-1个数的全排列问题; 依次取出每一个数…

    算法与数据结构 2023年5月19日
    00
  • CSS规则层叠时的优先级算法

    当多个CSS规则(指选择器和声明的组合)作用于同一元素时,就会遇到规则层叠的问题,也就是优先级的问题。CSS规则层叠时的优先级算法主要分为以下4个级别: 元素样式或行内样式(Inline Style):元素样式指的是通过HTML元素的style属性定义的样式,行内样式(如在CSS中使用选择器设置)也具有同等优先级; ID选择器(ID Selector):指通…

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

    JS排序之快速排序详解 快速排序是一种高效的排序算法,它的核心思想是分治。快排的具体步骤如下: 选择一个基准元素,将序列中所有元素和这个基准元素进行比较,将比基准元素小的元素放入左侧序列,将比基准元素大的元素放入右侧序列。 递归地对左右两个子序列进行快速排序,直到每个子序列只有一个元素或者为空。 示例1:将序列[3,1,6,4,8,2,5,7]进行快速排序。…

    算法与数据结构 2023年5月19日
    00
  • TypeScript调整数组元素顺序算法

    下面是详细的攻略: TypeScript调整数组元素顺序算法 在 TypeScript 中实现调整数组元素顺序的算法需要使用到以下两种方法: 方法一:splice() array.splice(startIndex, toRemove, …itemsToAdd) splice() 方法可以实现对数组中指定起始索引 startIndex 开始的若干元素的删…

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