【数据结构】冒泡排序、直接插入排序、希尔排序详解!

文章目录

      • 1. 冒泡排序🍎
      • 2. 直接插入排序🍎
      • 3. 希尔排序(缩小增量排序)🍎

1. 冒泡排序🍎

  • 🐧 基本思想:
    比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    大的数据往下沉(可以理解为:大的数据往最右边放),小的数据往上冒,每次都能把一个未排好序列中一个最大的数据放到其合适的位置。
    所以冒泡排序法是最右边的数据从右往左变得慢慢有序(每次都能当前未排序的最大数据到当前末尾正确位置)

在这里插入图片描述

  • 🐧 时间复杂度:O( n 2 n^2 n2),最好的情况,待排序的数据几乎有序( O(n) )
  • 🐧 稳定新:稳定的

在这里插入图片描述



2. 直接插入排序🍎

  • 🐧 基本思想:
    在这里插入图片描述

  • 🐧 时间复杂度:O( n 2 n^2 n2),最好的情况( O(n) )
    注意:❗直接插入排序的效率是比冒泡排序的效率高的。

  • 🐧 以下代码分析:
    注意❗:直接插入排序,是把一个数据插入到一个有序的序列中。

在这里插入图片描述


3. 希尔排序(缩小增量排序)🍎

  • 🐧 基本思想:🍳简单来说就两个步骤
    ① 先进行预排序
    在这里插入图片描述

    ② 再进行直接插入排序


  • 🐧 思路的过程如下:🍳

在这里插入图片描述

  • 🐧 时间复杂度:O(n^1.3),注意它的效率是低于 O(n l o g 2 n log_2n log2n ) 级别排序算法的。

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在编程中百分号表示什么:深度解析其多重角色与应用

在编程中百分号表示什么:深度解析其多重角色与应用 在编程的广阔领域中,百分号(%)这一看似简单的符号,实则承载着多重含义与功能。它既是数学运算的得力助手,又是字符串格式化的关键工具,甚至在…

Midjourney绘画关键词参数汇总(一)

在数字艺术和创意设计领域,参数化绘画技术正日益受到关注。Midjourney作为一家领先的艺术技术公司,推出了一系列绘画关键词参数,为艺术家和设计师们提供了全新的创作工具。本文将介绍Midjourney绘画关键词参数的汇总,探索其在数字…

适合能源企业的文档安全外发系统应该是什么样的?

能源企业是市场经济中的重要组成,也是社会可持续长远发展的关键组成之一,能源行业在开拓新能源业务线、提升产能的日常经营中,也需要与外部合作伙伴、客户间进行密切的业务往来,文档可能涉及多个领域多个类型。 能源供应合同&…

Vue3 之 动态组件和KeepAlive组件

一、动态组件 1、简介 ​ 在某些业务场景下,页面的某模块具有多个组件但在同一时间只显示一个,需要在多个组件之间进行频繁的切换,如:tab切换等场景。除了可以使用v-if、v-show根据不同条件显示不同组件之外,还可以通…

深入理解模型驱动测试:优点、挑战与应用场景

本文翻译自:Understanding Model-Based Testing: Benefits, Challenges, and Use Cases 原文作者:Qt Group质量保证市场营销主管Sebastian Polzin 审校:Jinjing Li 对于那些寻求系统化和条理化测试方法的测试工程师而言,模型驱动…

ROS2 Topics和Services

本文主要介绍ROS的Topics概念,如何创建Publisher和Subscriber,通过Topic在ROS程序间通信;介绍ROS的Services概念,如何创建Client和Server并建立通信。 更多内容,访问专栏目录获取实时更新。 ROS Topics Topics可以被视…

做电商,错过了2020年的抖音!那2024一定要选择视频号小店!

哈喽~我是电商月月 电商老板们集合了,问大家一个问题: 如果能让你回到三四年前,抖音才步入大众视野,这时候让你去做抖音小店,你愿意吗? 我敢相信!很多,错过当年抖音红利的商家,一…

计算机三级 网络技术

一、边界网关协议BGP BGP是边界网关协议,是外部而不是内部网关协议(是不同自治系统的路由器之间使用的协议)一个BGP发言人使用TCP(不是UDP)与其自治系统的BGP发言人交换路由信息。BGP协议交换路由由信息的节点数是以自…

Docker HTTPS api V2 Manifest V 2, Schema 2 下的免装docker下载镜像的方法

目录 前言 下载镜像代码 使用方法 原代码中无法适配 Schema 2 的原因浅析 如何解决 相对原代码改动的东西 前言 本文提供代码主要是基于 https://github.com/NotGlop/docker-drag 提供的代码修改的。链接中提供的代码应该是是基于HTTPS api V2 Manifest V 2, Schema 1实…

面试必备:应对 “为什么离职” 的万能回答

使用PC端的朋友,请将页面缩小到最小比例,阅读最佳! 面试官问到你为什么从上一家公司离职时,你会怎么回答?这个问题我觉得很有意思,也很有必要去探讨一下。 很多专业人士都会建议你,最好不要直接…

C++---迭代器介绍

迭代器的介绍 使用迭代器需要引用头文件,但一般的容器都引用了这个头文件。 这五种迭代器的声明如下: struct output_iterator_tag { };//输出迭代器 struct input_iterator_tag{ };//输入迭代器 struct forward_iterator_tag : public input_iterator_tag {};//向前迭代器 …

基于序列深度学习模型的向量海岸线形状分类方法 2024.05

本文中提出了一个数据驱动的方法来分类的形状矢量海岸线,该方法利用基于序列的深度学习算法对海岸线矢量分段进行建模和分类。具体而言,首先将复杂的海岸线划分为一系列弯曲,并进一步提出了一组不同的特征来描述每个弯曲的形态特征。然后&…

强化学习——学习笔记2

在上一篇文章中对强化学习进行了基本的概述,在此篇文章中将继续深入强化学习的相关知识。 一、什么是DP、MC、TD? 动态规划法(DP):动态规划法离不开一个关键词,拆分 ,就是把求解的问题分解成若…

【JavaScript脚本宇宙】点燃你的Web开发:数据绑定和MV*框架

逐一剖析:JavaScript框架和库的概述、特点与应用 前言 在当今技术日新月异的时代,JavaScript库和框架已成为前端开发的重要工具。这篇文章将详细介绍六种不同的JavaScript库和框架,帮助读者了解他们的主要特性、使用示例和适用场景。 欢迎订…

gif帧数修改怎么操作?一键掌握GIF帧数修改技巧!

gif帧数修改怎么操作?在数字化信息爆炸的时代,GIF动图因其生动有趣的特性而备受广大网友喜爱。然而,很多时候我们可能会遇到GIF动图帧数过多或过少,导致动画效果不尽如人意的情况。那么,如何对GIF动图的帧数进行修改呢…

探索微软Edge开发者工具:优化前端开发的艺术与科学

探索微软Edge开发者工具:优化前端开发的艺术与科学 引言:Edge开发者工具概览一、基础操作:步入DevTools的大门1.1 启动与界面布局1.2 快速导航与定制 二、元素审查与样式调整2.1 精准元素选取2.2 实时CSS编辑2.3 自动完成与内联文档 三、Java…

YOLOv10最详细全面讲解1- 目标检测-准备自己的数据集(YOLOv5,YOLOv8均适用)

YOLOv10没想到出来的如此之快,作为一名YOLO的爱好者,以YOLOv5和YOLOv8的经验,打算出一套从数据集装备->环境配置->训练->验证->目标追踪全系列教程。请大家多多点赞和收藏!!!YOLOv5和YOLOv8亲测…

dubbo复习:(13)把服务划分为不同的group 和version,只有服务端和客户端group和version匹配才能通信

一、接口定义 package cn.edu.tju.service;public interface DevelopService {String invoke(String param); }二、两个版本的实现: package cn.edu.tju.service;import org.apache.dubbo.config.annotation.DubboService;DubboService(group "group1"…

bert模型数据集加载方式

数据集构造 无论是机器学习还是深度学习对于数据集的构造都是十分重要。 现记录一下PyTorch 的 torch.utils.data.Dataset 类的子类。Dataset 类是PyTorch框架中用于处理数据的基本组件,它允许用户定义自己的数据集类,以满足特定任务的需求。 Dataset…

重学英语:输出的重要性

精通一门外语的四要素:听,说,读,写 输入:听,读 输出:写,说 因为输入是我们可以单独完成,不需要有人互动,所以我们做得最多 输出练习做得很少,…