当前位置: 首页 > news >正文

数据结构:插入排序

1.插入排序

此排序如打扑克牌一样;每次抓牌,把扑克从前向后扒拉;找到合适的位置插入进去—所以叫插入排序;

时间复杂度:O(N^2)

    int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };//数据太多就不好写了
    for (int i = 1; i < 10; i++) {
        int n = i;
        for (; n > 0; n--) {
            if (arr[n] < arr[n - 1])  swap(arr[n], arr[n - 1]);
            else  break;
        }
    }
    for (auto x : arr) 
        cout << x << endl;
    return 0;

 2.希尔排序

时间复杂度:O(N^1.3)

希尔排序是插入排序的优化;在完全逆序的情况下,就是将最大的数,排向最后一个数,只不过是从插入排序的一个一个比较,向后挪动;变成了一个大增量的向后挪动;减少了比较的次数;

思想:此思想属于个人思考;用于推演提出算法的人的思想历程;不一定对,但值得一看;

数组:arr[10] = { 9,8,7,6,5,4,3};        //进行升序排序;

间距:d=5;//间距d先取5,再取4,3,2,1;

d=5时,是9与4比较大小,于是乎,就得知了9与4的位置是相对的,4在9的前面;

d进行缩小,再推演:如果3与4进行比较,3在4的前面,那么3也肯定在9的前面;但是3与9不一定会通过间距直接进行比较;而是通过4与9的关系进行了间接比较;

通过不断的缩短间距d,数字之间进行相对位置的比较,从而进行正确的排序;

但是,缺陷所在就是:d的变化过大,会使两个数的相对位置无法确定,造成排序不准确;

 缺陷:

由于是控制增量的变化来进行大小比较来排序;以升序为例,数值大的一端总是比数值小的一端更快的排好;若增量的变化的数值若过大,排序的结果,也不会如想象中的结果;

希尔排序是一个非常不稳定的排序——因为他是由增量控制的;

{    int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };        
    int n = sizeof(arr)/sizeof(int), gap = n;
    while (gap > 1) {
      
 gap = gap / 3 + 1;   //gap=gap-1; //由于增量的控制过大,会导致结果完全不同

                          //数据量越大,越无序;gap控制的越好的时候,希尔排序还是很能打的

                      //时间复杂度:大约在O(N的1.3次方的样子);当n无限大的时候还会减小;
        for (int i = 0; i < n - gap; i++) {
            if (arr[i] > arr[i + gap]) {
                swap(arr[i], arr[i + gap]);
            }
        }        
    }
    for (auto x : arr) {
            cout << x << endl;
    }    
    return 0;}    

相关文章:

数据结构:插入排序

1.插入排序 此排序如打扑克牌一样&#xff1b;每次抓牌&#xff0c;把扑克从前向后扒拉&#xff1b;找到合适的位置插入进去—所以叫插入排序&#xff1b; 时间复杂度&#xff1a;O&#xff08;N^2&#xff09; int arr[10] { 9,8,7,6,5,4,3,2,1,0 };//数据太多就不好写了 …...

Nginx反向代理配置与负载均衡配置

简介&#xff1a;整理自黑马程序员苍穹外卖的第11节 nginx是什么&#xff1f; nginx的好处 nginx反向代理配置方式 nginx负载均衡的配置方式 nginx负责均衡策略...

axios 前端与 Django 后端的 POST 交互

背景 自己在写一些油猴脚本&#xff0c;前端需要用 JS&#xff0c;后端是自己的服务&#xff0c;是用 Python 的 Django 框架完成的。 油猴脚本中需要通过 POST 方法&#xff0c;向后端传一些数据&#xff0c;所以前端我用的是 axios 库&#xff0c;后端需要用 Django 处理 P…...

数据结构常用术语

一. 常见术语 数据相关 英文术语中文术语Data数据Data element数据元素Data item数据项Data structure数据结构Logical structure逻辑结构Data type数据类型 指针与存储 英文术语中文术语Pointer指针Sequential storage structure顺序存储结构Linked storage structure链状…...

Flask 轻松上手:从零开始搭建属于你的Web应用

引言 随着互联网技术的发展&#xff0c;Web应用程序的需求日益增长。对于开发者来说&#xff0c;选择一个合适的框架至关重要。Flask以其简洁的设计、高度的可定制性和对各种扩展的良好支持&#xff0c;成为了很多项目的基础。无论你是初学者还是有经验的开发者&#xff0c;掌…...

[MyBatis-Plus]快速入门

介绍 MyBatis-Plus是MyBatis的好朋友, 与MyBatis配合, 实现开发效率的提高 官网: 特点: 润物细无声: 只做增强不做改变, 引入它不会对现有工程产生影响, 如丝般顺滑效率自上: 只需简单配置, 即可快速进行单表CRUD, 从而节省大量时间功能丰富: 代码生产, 自动分页, 逻辑删除, …...

单例模式和读者写者问题

文章目录 10. 线程安全的单例模式10.1 什么是设计模式10.2 什么是单例模式10.3 单例模式的特点10.4 饿汉方式和懒汉方式10.5 单例模式的线程池 11. STL和智能指针的线程安全 问题11.1 STL中的容器是否是线程安全的?11.2 智能指针是否是线程安全的? 12. 其他常见的各种锁13. 读…...

内网wordpress更换IP后无法访问的解决办法

一、现象 一台装有wordpress的台式机&#xff0c;从一个校区移到了另一个校区&#xff0c;更换了IP地址&#xff0c;导致无法正常访问。 二、分析 安装wordpress的时候里面的ip&#xff08;或域名&#xff09;都已固定。安装好后&#xff0c;内网通过IP访问&am…...

Spring Boot课程答疑:技术难题一网打尽

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…...

云卷云舒【超级数据库】:算力网络时代的云原生数据库

一直关注算力网络&#xff0c;再次分析下移动云的数据库团队&#xff0c;他们在做的一些事情其实比较务实&#xff0c;在推进数据库依托云原生演进到算力网络阶段&#xff0c;这都是在构建一个能够承载无限容量、无感接入、多模融合、智能调度的超级数据库。 未来数据库&#…...

电脑分盘分盘

方案一&#xff1a;使用磁盘管理工具扩展卷功能将未分配磁盘合并到C盘 按WinR输入diskmgmt.msc并按Enter键打开磁盘管理工具。在主界面中右键单击C盘驱动器并选择“扩展卷”&#xff0c;然后按照提示流程操作即可扩展C盘空间。 WinR diskmgmt.msc 注意&#xff1a;虽然系统内置…...

四元数基础知识

背景 四元数是方向的 4 元组表示形式&#xff0c;它比旋转矩阵更简洁。 四元数对于分析涉及三维旋转的情况非常有效。 四元数广泛用于机器人技术、量子力学、计算机视觉和 3D 动画。 您可以在 Wikipedia 上了解有关基本数学概念的更多信息。 您还可以观看由 3blue1brown 制…...

『网络游戏』进入游戏主城UI跳转主城【26】

首先在Unity客户端中创建一个空节点重命名为MainCityWnd 设置父物体为全局 创建空节点钉在左上角作为角色信息UI 在钉子下创建Image 创建脚本&#xff1a;MainCityWnd.cs 编写脚本&#xff1a;MainCityWnd.cs 挂载脚本 创建脚本&#xff1a;MainCitySys.cs 编写脚本&#xff1a…...

多点低压差分(M-LVDS)线路驱动器和接收器——MS2111

MS2111 是多点低压差分 (M-LVDS) 线路驱动器和接收器。经过 优化&#xff0c;可运行在高达 200Mbps 的信号速率下。所有部件均符合 M LVDS 标准 TIA / EIA-899 。该驱动器的输出支持负载低至 30Ω 的多 点总线。 MS2111 的接收器属于 Type-2 &#xff0c; 可在 -1…...

regexp_split_to_table的作用

regexp_split_to_table 是 PostgreSQL 中的一个函数&#xff0c;用于将一个字符串根据正则表达式进行分割&#xff0c;并将结果返回为一个表格&#xff08;每个分割后的部分作为一行&#xff09;。这个函数非常有用&#xff0c;特别是在处理复杂字符串时。 语法 regexp_split…...

【MATLAB】基于RSSI的蓝牙定位程序,4个锚点、二维平面

目录 ​编辑 商品描述 主要功能 技术细节 适用场景 下载链接 商品描述 这款基于接收信号强度指示&#xff08;RSSI&#xff09;原理的蓝牙定位程序&#xff0c;专为需要高效、可靠定位解决方案的开发者和研究人员设计。它能够在二维平面内&#xff0c;通过4个锚点实现对未…...

利用 langchain 和 LLM 来给 PDF 做总结

在网上看到一个PDF, 讲的是 Gstreamer 的的动态管道的构建, 一瞥而过, 没时间细看, 先写个小程序通过 langchain 和 LLM 给它做个快速总结 代码如下 from langchain.document_loaders import UnstructuredPDFLoader from langchain.llms import OpenAI from langchain.chains i…...

props 不能轻易解构,注意maxLength类似这种,不能解构出来

当您从 props 对象中解构 msg 时&#xff0c;msg 变量将会获取到当时的 props.msg 值。解构操作仅仅是将当前值复制到 msg 变量中&#xff0c;它并不会建立响应式连接。因此&#xff0c;当 props.msg 发生变化时&#xff0c;解构出的 msg 变量仍保持其原始值&#xff0c;不会自…...

总结拓展十三:SAP系统采购订单关闭实例分享

1、案例分享 我们集团A基地和B基地存在外包加工业务。A基地向B基地外包采购了多起不同类型的物料&#xff0c;近期有部分外包采购暂停&#xff0c;需要采购关闭未完成交货的采购订单。采购在关闭时出现2类报错问题&#xff0c;向我们IT咨询解决方案。 1&#xff09;报错类型 …...

内嵌服务器Netty Http Server

内嵌式服务器不需要我们单独部署&#xff0c;列如SpringBoot默认内嵌服务器Tomcat,它运行在服务内部。使用Netty 编写一个 Http 服务器的程序&#xff0c;类似SpringMvc处理http请求那样。举例&#xff1a;xxl-job项目的核心包没有SpringMvc的Controller层&#xff0c;客户端却…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...