首页 > 编程语言 >JavaScript 排序算法

JavaScript 排序算法

时间:2024-03-24 22:29:05浏览次数:20  
标签:arr const JavaScript len 算法 let 排序

在这篇文章中,我将介绍几种常见的 JavaScript
排序算法,并对它们的原理和实现进行详细说明。排序算法是计算机科学中非常重要的基础知识之一,它们可以帮助我们对数据进行有效的整理和排序,提高程序的效率和性能。

冒泡排序(Bubble Sort)

冒泡排序是最简单的排序算法之一,它通过不断地交换相邻的元素,将最大(或最小)的元素逐渐“冒泡”到数组的末尾。这个过程会重复多次,直到整个数组都变得有序。

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

const arr = [64, 34, 25, 12, 22, 11, 90];
console.log(bubbleSort(arr));

选择排序(Selection Sort)

选择排序的原理是每次从未排序的部分中选出最小(或最大)的元素,然后将其放到已排序部分的末尾。这个过程也需要重复多次,直到整个数组都有序。

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

const arr = [64, 34, 25, 12, 22, 11, 90];
console.log(selectionSort(arr));

插入排序(Insertion Sort)

插入排序的思想是将未排序部分的第一个元素插入到已排序部分的适当位置,使得已排序部分仍然保持有序。这个过程同样需要重复多次,直到整个数组都有序。

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

const arr = [64, 34, 25, 12, 22, 11, 90];
console.log(insertionSort(arr));

总结

以上是三种常见的 JavaScript 排序算法的实现,它们分别是冒泡排序、选择排序和插入排序。除了这些算法之外,还有许多其他高效的排序算法,比如快速排序、归并排序等。选择合适的排序算法取决于数据规模、性能需求和实际应用场景。希望读者能通过本文对排序算法有更深入的了解,并能在实际开发中灵活运用。

标签:arr,const,JavaScript,len,算法,let,排序
From: https://blog.csdn.net/weixin_73032215/article/details/136996483

相关文章

  • 【进阶五】Python实现SDVRP(需求拆分)常见求解算法——自适应大邻域算法(ALNS)
    基于python语言,采用经典自适应大邻域算法(ALNS)对需求拆分车辆路径规划问题(SDVRP)进行求解。目录往期优质资源1.适用场景2.代码调整3.求解结果4.代码片段参考往期优质资源经过一年多的创作,目前已经成熟的代码列举如下,如有需求可私信联系,表明需要的问题与算法......
  • c++十大排序——快速排序
    1#include<iostream>usingnamespacestd;voidquickSort(intarr[],intbegin,intend){ if(begin>=end)return; intleft=begin; intright=end; inttemp=arr[left]; while(left<right){ //从后往前找比他小的放前面,从前往后找比它大的放后......
  • c#使用System.Security.Cryptography实现DES算法加密和解密
    c#使用System.Security.Cryptography实现DES算法加密和解密在加密过程中,通常会将原始数据转换为字节数组,然后对其进行加密。而在解密过程中,需要将加密后的数据解密为原始字节数组,然后进行相应的处理。//解密读取publicstaticstringDecrypt(stringdata){try{......
  • 试题 算法提高 长度统计
    资源限制内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述给出n个线段以及它们的左端点和右端点。我们要求得到这些线段覆盖部分的长度。如线段[1,2]和[2,3]覆盖了数轴上1到3这个部分,所以它们覆盖的长度就是2。输入格式......
  • 【数据结构】快速排序(用递归)
    大家好,我是苏貝,本篇博客带大家了解快速排序,如果你觉得我写的还不错的话,可以给我一个赞......
  • 【数据结构】希尔排序
    大家好,我是苏貝,本篇博客带大家了解希尔排序,如果你觉得我写的还不错的话,可以给我一个赞......
  • 【数据结构】归并排序(用递归)
    大家好,我是苏貝,本篇博客带大家了解归并排序,如果你觉得我写的还不错的话,可以给我一个赞......
  • day9 嵌套排序,利用嵌套循环所写的简单时钟
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>//利用嵌套循环编写一个时间的函数#include<Windows.h>//利用windows的函数来定义时刻。intmain(){   for(inti=0;i<24;i++)//嵌套的本质是外层执行一次内层执行一周,内层如果再嵌套则此时的内层表示的是......
  • C# Dictionary(字典)的键、值排序
    Dictionary<string,string>dic1=newDictionary<string,string>();dic1.Add("ddd","123");dic1.Add("aaa","123");dic1.Add("ccc","123");dic1.Add("fff",&q......
  • 编程界的万能钥匙:揭秘程序员常用的超实用算法!
    程序员常用的算法引言一、排序算法:为数据秩序井然二、搜索算法:高效定位数据三、图算法:理解复杂网络结构四、动态规划:优化递归求解过程五、贪心算法:简单高效的局部最优解六、数据结构相关算法:必不可少的工具七、算法的选择与实践:如何选择合适的算法结语引言大家好,这......