JS插入排序简单理解与实现方法分析

yizhihongxing

JS插入排序简单理解与实现方法分析

描述

插入排序是一种比较简单的排序方法,它的核心思想是将待排序的元素,依次插入到已经排好序的部分,从而逐渐将整个序列排好。具有较好的稳定性和适用性。

实现思路

插入排序的实现思路:

  1. 将第一个元素当做已经排序好的序列
  2. 从第二个元素开始遍历整个数组
  3. 回溯已经排序好的序列,将当前元素插入到比它大的元素之前
  4. 重复2、3步骤直到排序完成

代码实现

下面是JavaScript实现插入排序的示例代码:

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

示例解析

为了更好地理解插入排序的实现方法,我们将使用以下两个示例来帮助我们分析。

示例1:

给定数组 [3, 1, 6, 2, 9, 10] ,使用插入排序算法进行排序。

首先将数组下标为0的元素3视为已排序的序列,从下标为1的元素1开始遍历数组, 当前元素为1,需要将1插入到已排序的序列中。

  1. 将1与已排序的序列中最后一个元素(3)比较,如果1小于3,则将1插入到(3前面的位置)。

    [3, 1, 6, 2, 9, 10]
    // 1 < 3
    [1, 3, 6, 2, 9, 10]

  2. 继续遍历数组,当前元素为6,需要将6插入到已排序的序列中。

    [1, 3, 6, 2, 9, 10]
    // 6 > 3
    [1, 3, 6, 2, 9, 10]

  3. 继续遍历数组,当前元素为2,需要将2插入到已排序的序列中。

    [1, 3, 6, 2, 9, 10]
    // 2 < 6
    [1, 3, 2, 6, 9, 10]
    // 2 < 3
    [1, 2, 3, 6, 9, 10]

  4. 继续遍历数组,当前元素为9,需要将9插入到已排序的序列中。

    [1, 2, 3, 6, 9, 10]
    // 9 > 6
    [1, 2, 3, 6, 9, 10]

    当前元素为10,需要将10插入到已排序的序列中。

    [1, 2, 3, 6, 9, 10]
    // 10 > 9
    [1, 2, 3, 6, 9, 10]

最终排序结果为[1, 2, 3, 6, 9, 10]

示例2:

给定数组 [-2, 45, 0, 11, -9] ,使用插入排序算法进行排序。

首先将数组下标为0的元素-2视为已排序的序列,从下标为1的元素45开始遍历数组, 当前元素为45,需要将45插入到已排序的序列中。

  1. 将45与已排序的序列中最后一个元素(-2)比较,如果45大于-2,则将45插入到-2后的位置。

    [-2, 45, 0, 11, -9]
    // 45 > -2
    [-2, 45, 0, 11, -9]

  2. 继续遍历数组,当前元素为0,需要将0插入到已排序的序列中。

    [-2, 45, 0, 11, -9]
    // 0 > -2
    [-2, 0, 45, 11, -9]

  3. 继续遍历数组,当前元素为11,需要将11插入到已排序的序列中。

    [-2, 0, 45, 11, -9]
    // 11 > 0
    [-2, 0, 11, 45, -9]
    // 11 < 45
    [-2, 0, 11, 45, -9]

  4. 继续遍历数组,当前元素为-9,需要将-9插入到已排序的序列中。

    [-2, 0, 11, 45, -9]
    // -9 < 0
    [-2, -9, 0, 11, 45]

最终排序结果为[-2, -9, 0, 11, 45]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS插入排序简单理解与实现方法分析 - Python技术站

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

相关文章

  • PHP实现批量检测网站是否能够正常打开的方法

    以下是详细讲解“PHP实现批量检测网站是否能够正常打开的方法”的完整攻略: 步骤一:获取待检测的网站列表 首先我们需要准备一个文本文件,里面包含了我们需要检测的网站列表。每一行应该包含一个网站的URL地址,如下所示: https://www.google.com http://www.baidu.com http://www.github.com 注意:每个…

    算法与数据结构 2023年5月19日
    00
  • python快速排序代码实例

    Python 快速排序 (Quick Sort) 是一种排序算法,它利用分治思想来快速排序一个数组或序列。该算法的时间复杂度为 O(nlogn)。 要理解快速排序算法,我们需要掌握以下概念: 基准值 (pivot):排序过程中用于比较的值。在每一轮的排序过程中,基准值会将数组或序列分成两部分。 子数组 (subarray):对于一个数组或序列,它的一部分就是…

    算法与数据结构 2023年5月19日
    00
  • JS使用单链表统计英语单词出现次数

    下面是JS使用单链表统计英语单词出现次数的完整攻略。 1. 理解单链表 单链表是一种常见的数据结构,也是一种线性结构,其中每个节点只有一个指针,指向它的后继节点。单链表一般由头指针和头结点组成,头结点不存放任何实际数据。在单链表中,节点可以进行插入、删除、查找等基本操作,是一种十分常用的数据结构。 2. 思路分析 要使用单链表统计英语单词出现次数,可以将单词…

    算法与数据结构 2023年5月19日
    00
  • C语言实现冒泡排序算法的示例详解

    C语言实现冒泡排序算法的示例详解 冒泡排序是一种简单但效率较低的排序算法。它重复遍历要排序的数列,每次比较相邻两个元素,如果顺序不对就交换两元素顺序。该算法的时间复杂度为 O(n^2)。 以下是C语言实现冒泡排序的示例代码: #include <stdio.h> int main() { int arr[] = {5, 3, 8, 6, 4}; …

    算法与数据结构 2023年5月19日
    00
  • java简单冒泡排序实例解析

    Java简单冒泡排序是一种常见的排序算法,它通过不断比较相邻元素的大小,并交换相邻元素的位置,从而将最大(最小)的元素逐渐交换到序列的顶端(底端),实现排序操作。在本篇文章中,我们将详细讲解如何使用Java实现简单的冒泡排序算法。 算法实现思路 定义一个整型数组,包含待排序的元素 使用for循环嵌套,通过不断比较相邻的元素大小,将最大(最小)元素逐渐移到数组…

    算法与数据结构 2023年5月19日
    00
  • C++实现广度优先搜索实例

    C++实现广度优先搜索实例攻略 什么是广度优先搜索? 广度优先搜索(Breadth-First Search,也称之为BFS)是一种基于图的搜索算法,用于访问位于某个特定顶点距离为K的所有顶点。它广泛应用于树和图的数据结构中。 BFS的过程如下: 从源节点开始遍历; 访问相邻的节点; 将相邻节点加入队列; 标记已访问的节点; 重复步骤2-4,直到队列为空。 …

    算法与数据结构 2023年5月19日
    00
  • PHP快速排序quicksort实例详解

    PHP快速排序quicksort实例详解 本文将详细介绍如何使用PHP实现快速排序算法,并提供两个示例进行说明。 基本思路 快速排序是一种比较常见的排序算法,其基本思路是通过递归将待排序数组分割成更小的子数组,并把比基准值小的元素一次放到基准值左边,比基准值大的元素一次放到基准值右边,然后对左右两边分别递归执行上述操作,直到分割成的子数组长度为1,此时由于子…

    算法与数据结构 2023年5月19日
    00
  • JS实现数组随机排序的三种方法详解

    JS实现数组随机排序的三种方法详解 在JavaScript中,实现数组的随机排序是十分常见的需求。本篇文章将讲解三种实现数组随机排序的方法。 方法一:Fisher-Yates算法 Fisher-Yates算法(也被称为 Knuth算法)是实现数组随机排序最常用的算法之一。该算法的思路很简单,即从数组末尾开始,将当前位置的数与它之前的任意一个数交换顺序,直到数…

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