js实现常用排序算法

JS实现常用排序算法

排序算法是计算机领域中的重要算法之一,其作用是将一组无序的数据按照一定的规则进行排列,便于数据的查找和统计。在前端开发领域中,JS是常用的编程语言,下面一起来详细讲解如何用JS实现常用排序算法。

冒泡排序

冒泡排序是一种简单的排序算法,其具体思路是对需要排序的元素从头开始进行比较,如果前一个元素比后一个元素大,就交换这两个元素的位置,一直这样进行下去,直到所有元素都排好序为止。下面是冒泡排序的JS代码实现:

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

上面的代码中,我们使用了两个for循环来实现冒泡排序,第一个循环控制排序的轮数,第二个循环控制每一轮比较的次数。注意需要在内部循环中对相邻的元素进行比较和交换。

快速排序

快速排序是一种高效的排序算法,其核心思想是使用分治法的思想,将待排序的数组分成两个子数组,然后再对两个子数组进行快速排序,最后将两个有序的子数组合并成一个有序的数组。下面是快速排序的JS代码实现:

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));
}

上面的代码中,我们使用了递归的思想实现快速排序,首先判断数组的长度是否小于等于1,如果是直接返回数组,否则选取一个基准元素pivot并在原数组中删除,然后将小于基准元素的元素放在一个数组left中,将大于基准元素的元素放在一个数组right中,最后通过递归调用快排函数将left和right数组分别排序并连接为一个有序的数组。

示例说明

假设有一个需要排序的数组arr=[8,4,2,5,1,7,3,9,6],我们可以使用上面讲解的两种排序算法对它进行排序:

// 使用冒泡排序对数组arr进行排序
var sortedArr = bubbleSort(arr);
console.log(sortedArr); // 输出[1,2,3,4,5,6,7,8,9]

// 使用快速排序对数组arr进行排序
var sortedArr = quickSort(arr);
console.log(sortedArr); // 输出[1,2,3,4,5,6,7,8,9]

上面的代码中,我们分别使用了冒泡排序和快速排序对数组arr进行排序,并输出了排序后的结果。通过这种方式可以验证我们在前面讲解的两种排序算法的正确性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现常用排序算法 - Python技术站

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

相关文章

  • C语言实现数组元素排序方法详解

    C语言实现数组元素排序方法详解 概述 数组元素排序是C语言中常见的操作,它将数组中的元素按照一定的规则进行排序,使其符合特定的要求。常见的排序方法包括冒泡排序、插入排序、选择排序、快速排序等。 本文将详细讲解C语言实现数组元素排序的方法,包括上述四种排序方法的原理、代码实现,帮助初学者快速入门。 冒泡排序 冒泡排序是一种简单的排序方法,它依次比较相邻的两个元…

    算法与数据结构 2023年5月19日
    00
  • 关于Python排序问题(冒泡/选择/插入)

    关于Python排序问题,一般包括冒泡排序、选择排序和插入排序。下面分别进行介绍。 冒泡排序 冒泡排序就是重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。重复地进行以上操作,直到没有可以交换的元素为止。 示例代码: def bubble_sort(arr): n = len(arr) for i in range(n-1): …

    算法与数据结构 2023年5月19日
    00
  • 用c语言实现冒泡排序,选择排序,快速排序

    首先我们来讲一下三种基本的排序算法——冒泡排序、选择排序和快速排序,并且给出实现的具体代码。 冒泡排序 冒泡排序是一个非常简单的排序算法,其基本思想是比较相邻两个数的大小,如果前一个数比后一个数大,就将两个数交换位置。通过不断重复这个过程,将最大的数“冒泡”到数组的最后面,这个过程类似于水泡在水中不断冒上来,因此得其名。 具体的实现代码如下: void bu…

    算法与数据结构 2023年5月19日
    00
  • Python中利用sorted()函数排序的简单教程

    下面是我为您准备的Python中利用sorted()函数排序的简单教程。 1. sorted()函数的简介 sorted()函数是Python内置函数之一,用于对一个可迭代对象进行排序操作。这个函数返回一个新的列表,而不会修改原来的列表本身。 sorted()函数的基本语法如下所示: sorted(iterable, key=None, reverse=Fa…

    算法与数据结构 2023年5月19日
    00
  • 大数据情况下桶排序算法的运用与C++代码实现示例

    桶排序算法是一种基于计数的排序算法,它的主要思想是把一组数据分成多个桶,对每个桶中的数据进行排序,最后依次把每个桶中的数据合并起来,得到排序后的结果。在大数据情况下,桶排序算法可以大幅减少排序时间,因为它可以快速地将数据分成多个桶,进行并行排序,最终合并起来。 以下是桶排序算法在大数据情况下的运用及C++代码示例: 算法思路 先确定桶的数量,也就是需要将数据…

    算法与数据结构 2023年5月19日
    00
  • C语言每日练习之选择排序

    C语言每日练习之选择排序 选择排序算法简介 选择排序(Selection Sort)是一种简单直观的排序算法。它的基本思路是在未排序的数列中,从前往后依次选择最小的数,和第一个数进行交换,然后在剩余的数列中从前往后选择最小的数,与第二个数进行交换,直到选择到最后一个数为止。 选择排序的时间复杂度为O(n²),属于较慢的排序算法,但是它的实现简单易懂,不需要额…

    算法与数据结构 2023年5月19日
    00
  • C#归并排序的实现方法(递归,非递归,自然归并)

    下面是关于C#归并排序的实现方法的完整攻略: 什么是归并排序? 归并排序是一种基于分治法的算法,具体实现方法是将原序列分成若干个子序列,分别进行排序,然后将排好序的子序列合并成一个大的有序序列。 递归实现归并排序 递归实现归并排序分为三步: 分解数组:将要排序的数组从中间分成两个部分,即分为左右两个子数组。这里使用数组下标来实现。 递归排序子数组:对分解出来…

    算法与数据结构 2023年5月19日
    00
  • GO语言中常见的排序算法使用示例

    首先感谢你对“GO语言中常见的排序算法使用示例”的关注,下面是一个完整的攻略: GO语言中常见的排序算法 在GO语言中,常见的排序算法包括:冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序、堆排序等。这些排序算法的具体实现方式有所不同,但都可以在GO语言的标准库中找到相应的方法。 冒泡排序 冒泡排序的基本思路是比较相邻的两个元素,如果它们的顺序错误…

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