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

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日

相关文章

  • Java中自然排序和比较器排序详解

    Java中自然排序和比较器排序详解 简介 Java中排序分为自然排序和比较器排序两种方式。当对象包含了Comparable接口实现的compareTo方法时,便支持了自然排序。而比较器排序则需要自己实现一个Comparator接口,并传入调用方法中。本文将从以下几个方面详细介绍这两种排序方式: Comparable接口及compareTo方法 Compara…

    算法与数据结构 2023年5月19日
    00
  • C#算法之全排列递归算法实例讲解

    C#算法之全排列递归算法实例讲解 什么是全排列? 全排列是指将一个给定的集合中的元素进行排列,使得每个元素只出现一次,且每个元素在排列中的位置是不确定的,从而得到的所有不同排列。比如给定集合{1, 2, 3}的全排列包括{1, 2, 3}、{1, 3, 2}、{2, 1, 3}、{2, 3, 1}、{3, 1, 2}和{3, 2, 1}。 递归算法实现全排列…

    算法与数据结构 2023年5月19日
    00
  • Java快速排序案例讲解

    Java快速排序案例讲解 快速排序(Quicksort)是一种常见的排序算法,它的时间复杂度为O(nlogn),是一种效率较高的排序算法,在实际开发中也广泛应用。本文将介绍Java快速排序的实现过程以及具体实现。 快速排序介绍 快速排序是通过选择一个“基准数”,然后把整个数组分成两部分,分别为小于等于“基准数”的部分和大于“基准数”的部分。然后再对这两个部分…

    算法与数据结构 2023年5月19日
    00
  • 深入理解JS实现快速排序和去重

    深入理解JS实现快速排序和去重 1.快速排序 快速排序是一种快速并且高效的排序算法。下面是快速排序的步骤: 选择数组中的中心元素作为基准点(pivot) 将所有小于基准点的元素移到基准点的左侧,所有大于基准点的元素移到基准点的右侧 对左右两个子数组递归执行步骤1和步骤2,直到子数组长度为1或0 快速排序可以用以下的JavaScript代码来实现: funct…

    算法与数据结构 2023年5月19日
    00
  • js交换排序 冒泡排序算法(Javascript版)

    JavaScript冒泡排序算法 算法描述 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的序列,一次比较相邻的两个元素,如果它们的顺序错误就将它们交换。遍历序列的工作是重复地进行直到没有再需要交换,也就是说该序列已经排序完成。 算法实现 JavaScript 代码 function bubbleSort(arr) { var l…

    算法与数据结构 2023年5月19日
    00
  • JAVA中数组从小到大排序的2种方法实例

    JAVA中数组从小到大排序的2种方法实例 在Java中,对数组进行排序是一项常见的任务。本文将介绍Java中数组从小到大排序的两种方法。 方法一:使用Arrays.sort()方法 Arrays.sort()方法可用于对Java中的数组进行排序。排序之后,数组中的元素将按升序排列。 以下是示例代码: import java.util.Arrays; publ…

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

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

    算法与数据结构 2023年5月19日
    00
  • c语言排序之归并排序(递归和非递归)

    下面我来为你详细讲解“C语言排序之归并排序(递归和非递归)”的完整攻略: 什么是归并排序 归并排序是一种基于分治策略的排序算法,其基本思想是将原始数据分成若干个小的子序列,然后将这些小的子序列两两合并成为较大的子序列,直到最终合并成为完整的有序序列。 归并排序可以采用递归和非递归两种方式实现。 归并排序递归实现 归并排序的递归实现相对容易理解,可以通过以下步…

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