java数据结构与算法之插入排序详解

Java数据结构与算法之插入排序详解

什么是插入排序?

插入排序是一种简单且常用的排序算法,其基本思想是将未排序的元素一个一个地插入到已经排序好的有序序列中。

插入排序的步骤

  1. 首先确定一个将要被排序的数组;
  2. 从第二个元素开始,将其与排序好的子数组从后往前依次进行比较;
  3. 如果发现当前元素比排序好的子数组中的某个元素小,则将该元素插入到该元素的后面;
  4. 重复步骤2-3,直到所有元素都插入到有序序列中。

插入排序的示例

示例1

假设我们要将一个未排序的数字序列按照从小到大的顺序进行排序:

4, 1, 9, 3, 7, 6

首先,我们将第一个数字4看作一个有序子数组,然后从第二个数字1开始,依次将其插入到有序子数组中。第一次插入操作后,数组变成了:

1, 4, 9, 3, 7, 6

此时,有序子数组中有两个元素1和4。接下来,我们将第三个数字9插入到有序子数组中。由于9比4大,所以9不用做任何操作,数组保持不变:

1, 4, 9, 3, 7, 6

接下来,我们将第四个数字3插入到有序子数组中。由于3比9小,所以我们需要将9向后移动一个位置,并将3插入到原来9的位置:

1, 4, 3, 9, 7, 6

继续上述操作,最后的有序数组为:

1, 3, 4, 7, 9, 6
1, 3, 4, 6, 7, 9  //最终的有序数组

示例2

假设我们要将一个未排序的字符串数组按照从A到Z的顺序进行排序:

"C", "A", "D", "F", "H", "B", "G", "E"

首先,我们将第一个字符串C看作一个有序子数组,然后从第二个字符串A开始,依次将其插入到有序子数组中。第一次插入操作后,数组变成了:

A, C, D, F, H, B, G, E

此时,有序子数组中有两个元素A和C。接下来,我们将第三个字符串D插入到有序子数组中。由于D比C大,所以D不用做任何操作,数组保持不变:

A, C, D, F, H, B, G, E

接下来,我们将第四个字符串F插入到有序子数组中。由于F比D大,所以F不用做任何操作,数组保持不变:

A, C, D, F, H, B, G, E

接下来,我们将第五个字符串H插入到有序子数组中。由于H比F大,B和G同理,所以需要将这三个字符串向后移动一个位置,并将H插入到原来G的位置:

A, C, D, F, B, G, H, E

接下来,我们将第六个字符串B插入到有序子数组中。由于B比D小,所以我们需要将D, F, H, G, E 向后移动一个位置,并将B插入到原来D的位置:

A, B, C, D, F, H, G, E

继续上述操作,最后的有序数组为:

A, B, C, D, E, F, G, H  //最终的有序数组

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java数据结构与算法之插入排序详解 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Python之Class&Object用法详解

    Python之Class&Object用法详解 在Python中,Class&Object是面向对象编程的核心概念之一。本文将详细讲解Python中Class&Object的使用方法,包括如何定义类、实例化对象、访问类属性和对象属性等。同时,本文将提供两个示例来说明Class&Object的用法。 类的定义 在Python中,…

    other 2023年6月27日
    00
  • win7怎么打开后缀名为.pst的文件 win7系统文件后缀名.pst打开办法

    Win7系统文件后缀名.pst打开办法 如果你在Win7系统中遇到了后缀名为.pst的文件,下面是一些打开这种文件的方法: 方法一:使用Microsoft Outlook打开.pst文件 首先,确保你已经安装了Microsoft Outlook软件。如果没有安装,你可以从Microsoft官方网站下载并安装它。 打开Microsoft Outlook软件。 …

    other 2023年8月5日
    00
  • css @import url加载样式应用深入分析

    当我们需要加载一些额外的CSS文件来覆盖默认样式或者添加新的样式时,我们可以使用CSS的@import规则。@import规则用于导入一个CSS文件,并且可以在导入的CSS文件中再次使用@import规则,从而形成一个CSS文件的引用链。下面详细介绍如何使用@import规则加载样式,并且分析其应用深入。 一、@import规则的语法 @import规则可以…

    other 2023年6月25日
    00
  • windows10打开windowssandbox提示找不到虚拟机监控程序

    以下是关于“Windows 10打开Windows Sandbox提示找不到虚拟机监控程序”的完整攻略,包括基本知识和两个示例。 基本知识 Windows Sandbox是Windows 10中的一个虚拟化环境,可以在其中运行不受信任的应用程序,以确保系统的安全性。但是,在打开Windows Sandbox时,有时会出现“找不到虚拟监控程序”的错误提示。这通…

    other 2023年5月7日
    00
  • Linux系列教程(二十一)——Linux的bash基本功能

    Linux系列教程(二十一)——Linux的bash基本功能 Bash是Linux系统下最为常用的命令行解释器,它为用户提供了强大的文本处理能力、脚本编写能力,以及其他丰富的功能。在本篇教程中,我们将学习Bash的基本功能,包括Bash脚本的创建、文件的处理、变量的使用等。 Bash脚本的创建 首先,我们需要了解Bash脚本的创建方法。Bash脚本是一种以“…

    其他 2023年3月28日
    00
  • oracle数据库中日期时间的插入操作

    Oracle数据库中日期时间的插入操作 在Oracle数据库中,日期时间类型是一种非常重要的数据类型。在进行插入数据操作时,正确地插入日期时间数据,会对后续的数据统计和分析产生重要作用。因此,本文将介绍如何在Oracle数据库中正确地插入日期和时间数据。 插入日期 在Oracle中,日期数据类型为DATE,可以存储年、月、日、时、分、秒以及大约1/100秒的…

    其他 2023年3月29日
    00
  • 浅谈Redis处理接口幂等性的两种方案

    浅谈Redis处理接口幂等性的两种方案 什么是接口幂等性 接口幂等性是指无论调用多次同一个接口,都不会对数据产生影响,最终得到的结果都是相同的。 为什么需要处理接口幂等性 在分布式系统中,由于网络或者系统本身的原因,可能会造成接口调用多次,导致重复操作,或者是第一次调用失败后再次调用,导致数据出现错误。 解决方案一:使用Redis实现接口幂等性 Redis是…

    other 2023年6月26日
    00
  • 08001无法远程连接sqlserver数据库800

    如果您在远程连接SQL Server数据库时遇到了“08001无法远程连接SQL Server数据库800”错误,可以按照以下步骤进行排查: 首先,您需要确认SQL Server是否已启用远程连接。默认情况下,SQL Server不允许远程连接。您可以按照以下步骤启用远程连接: 打开SQL Server Configuration Manager。 选择SQ…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部