插入排序和希尔排序:

插入排序

1. 算法思想:

  1. 由数组下标为1 开始的数值作为判断依据,与之前的数据从后往前比较
  2. 定义tmp 暂存判断的数值,若前面的数据大于tmp,则将前面的数据向后移动 : arr[j+1]=arr[j]
  3. 若对比的数据比tmp 大,则往后移,产生空位
  4. 若前面的数据小于判断数据tmp ,则返回break(在有序的基础上,若遇到一个小于tmp 的,则此数据以前都比当前数据小,无判断意义)
  5. 在循环外将tmp 放入空位置

2. 代码实现:

//直接插入排序
void InsertSort(int* arr, int len)//快速排序的输入格式
{
	//算法描述:
	//从下标为1 的开始,从后向前找,若前比后大,则交换位置
	for (int i = 1; i < len; i++)
	{
		int tmp = arr[i];
		int j;
		for (j = i - 1; j >= 0; j--)
		{
			if (tmp < arr[j])
			{
				arr[j+1] = arr[j];
			}
			else
				break;
		}
		arr[j + 1] = tmp;
	}
}

3. 插入排序特性:

  1. 时间复杂度:O(n*n)
  2. 空间复杂度:O(1)
  3. 特点:约有序越快—时间复杂度O(n)
  4. 具有稳定性

问题引入?为什莫不能从前往后判断

//直接插入排序
void InsertSort(int* arr, int len)//快速排序的输入格式
{
	//for (int i = 1; i < len; i++)
	//{
	//	for (int j = 0; j < i; j++)
	//	{
	//		if(arr[j]>arr[i])
	//		{
	//			int tmp = arr[j];
	//			arr[j] = arr[i];
	//			arr[i] = tmp;
	//		//	break;
	//		}
	//	}
	//}
}

希尔排序:

1. 希尔排序算法思想:

希尔排序是对直接插入排序的优化(由其越有顺序越快的特点!)

  1. 将排序数组间隔分组(分组用直接插入排序,组内有序)
  2. 缩小分组再次排序,直到组数为1

2. 代码实现:

//这是配置好的模板文件
#include <iostream>
#include <string>
using namespace std; 

void Shell(int* arr, int len, int d)
{
	for (int i = 0; i < len; i++)
	{
		int tmp = arr[i];
		int j;
		for (j = i - d; j >= 0; j -= d)
		{
			if (tmp < arr[j])
			{
				arr[j + d] = arr[j];
			}
			else
				break;
		}
		arr[j + d] = tmp;
	}
}
void Xier(int* arr, int len)
{
	int drr[] = { 5,3,1 };
	int lendrr = (sizeof(drr) / sizeof(drr[0]));
	for (int i = 0; i < lendrr; i++)
	{
		Shell(arr, len, drr[i]);//一趟希尔排序
	}
}
void Show(int* arr, int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("%d  ", arr[i]);
	}
	printf("\n");
}
int main()
{
	int arr[] = { 6,0,1,15,7,8,5,11,20,40,35 };
	Show(arr, sizeof(arr) / sizeof(arr[0]));
	Xier(arr, sizeof(arr) / sizeof(arr[0]));
	Show(arr, sizeof(arr) / sizeof(arr[0]));
	return 0;
}

3. 希尔排序特性:

时间复杂度:O(n1.3~n1.5次方)

空间复杂度:O(1)

稳定性:不稳定(数据跳跃)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

展会邀约 |立仪科技邀您相聚四月

2024深圳国际传感器与应用技术展览会 2024年04月14日盛大开幕&#xff01; 立仪科技作为参展商 诚挚地邀请各地朋友莅临参观交流 2024成都国际工业展览会 2023年04月24-26日盛大开幕&#xff01; 立仪科技作为参展商 诚挚地邀请各地朋友莅临参观交流 深圳立仪科技有限公司…

Ubuntu上安装d4rl数据集

Ubuntu上安装d4rl数据集 D4RL的官方 github: https://github.com/Farama-Foundation/D4RL 一、安装Mujoco 1.1 官网下载mujoco210文件 如果装过可以跳过这步 链接&#xff1a;https://github.com/deepmind/mujoco/releases/tag/2.1.0 下载第一个文件即可。我这里是在windo…

拥抱C++的深度和复杂性,挖掘更多可能 !——《C++20高级编程(第5版)》

&#xff0c;C难以掌握&#xff0c;但其广泛的功能使其成为游戏和商业软件应用程序中最常用的语言。即使是有经验的用户通常也不熟悉许多高级特性&#xff0c;但C20的发布提供了探索该语言全部功能的绝佳机会。《C20高级编程(第5版)》为C的必要内容提供了一个代码密集型、面向解…

TF卡系统备份与还原

本文介绍一种用备份还原方法&#xff0c;快速实现TF启动卡制作&#xff0c;使用方便&#xff0c;无需安装linux系统&#xff0c;需要使用Diskgnius软件。 安装Diskgnius&#xff0c;64位绿色版本&#xff0c;无需安装&#xff0c;直接运行即可。运行Diskgnius软件&#xff0c;将…

【感悟《剑指offer》典型编程题的极练之路】02字符串篇!

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章所属专栏&#xff1a;《剑指offer》典型编程题的极练之路 ​​​​​​ 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c…

可怜的百度人

可怜的百度股民 注意&#xff0c;这里说的是持有百度股票的股民&#xff0c;不是百度&#xff0c;百度没啥好可怜的。 前天&#xff08;3月25日&#xff09;中午&#xff0c;财联社爆料百度和 Apple 达成合作&#xff0c;百度将为苹果今年发布的 iPhone16、Mac 系统和 iOS18 提…

【SpringSecurity】基础入门

目录 权限管理什么是权限管理认证授权权限管理解决方案Shiro开发者自定义Spring Security Spring Security特性Spring、Spring Boot 和 Spring Security 三者的关系整体架构1.认证AuthenticationManagerAuthenticationSecurityContextHolder 2.授权AccessDecisionManagerAccess…

JRT菜单

上一章搭建了登录界面的雏形和抽取了登录接口。给多组使用登录和菜单功能提供预留&#xff0c;做到不强行入侵别人业务。任何产品只需要按自己表实现登录接口后配置到容器即可共用登录界面和菜单部分。最后自己的用户关联到JRT角色表即可。 登录效果 这次构建菜单体系 首先用…

错误记录

Packet for query is too large 错误原因 一般是没有修改Mysql允许传输的最大数据包大小&#xff0c;使用 SHOW VARIABLES LIKE %max_allowed_packet%;可以看到默认的大小&#xff0c;一般默认为1M。 处理方法 暂时修改&#xff1a;重启mysql后失效 --修改为10M set global…

使用 Web Components 实现输入法更换皮肤 (vue)

更换皮肤 (界面外观) 是拼音输入法的常见功能. 要实现更换皮肤, 有许多种不同的具体技术方案可以使用. 本文选择 Web Components 技术 (vue) 来实现这个功能. 目录 1 效果展示 1.1 发布新版本 2 Web Components 简介3 vue 使用 Web Components 3.1 使用 vue 实现 Web Compon…

比对word文档并提取差异片段(java版)

整体比较 有时候&#xff0c;我们想比对两个word文档&#xff0c;标记出两个文档之间的差异&#xff0c;这样一眼就能看出来修改了哪些地方&#xff0c;如下图,左边文档中的扩招2000人删除了&#xff0c;辞呈改成了说明&#xff0c;新增了并且加重处罚等文字&#xff0c;是否一…

DP背包模型

目录 采药&#xff08;01背包&#xff09;代码实现 装箱问题&#xff08;01背包&#xff09;代码实现 *宠物小精灵之收服&#xff08;二维费用01背包&#xff09;题目分析代码实现 数字组合&#xff08;01背包&#xff09;代码实现 买书&#xff08;完全背包&#xff09;代码实…

【学习】软件测试中误区汇总分析

大家有没有想过这个问题&#xff1a;软件测试中有哪些误区呢&#xff1f;想起这个题目&#xff0c;是因为最近遇到好几次关于这方面的讨论。发觉即便做过几年测试的老员工也或多或少有些这方面的困惑。当然一家之言&#xff0c;仅作抛砖引玉之谈。 误区一&#xff1a;测试就是…

git提交-分支开发合并-控制台操作

git提交-分支开发合并-控制台操作 git的基本概念工作区、暂存区和版本库工作区&#xff1a;就是你在电脑里能看到的目录&#xff08;隐藏目录 .git不算工作区&#xff09;。暂存区&#xff1a;英文叫 stage 或 index。一般存放在本地的.git目录下的index 文件&#xff08;.git/…

【机器学习之---数学】统计学基础概念

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 统计学基础 1. 频率派 频率学派&#xff08;传统学派&#xff09;认为样本信息来自总体&#xff0c;通过对样本信息的研究可以合理地推断和估计总体信息…

为什么requests不是python标准库?

在知乎上看到有人问&#xff1a;为什么requests不是python标准库&#xff1f; 这确实是部分人困惑的问题&#xff0c;requests作为python最受欢迎的http请求库&#xff0c;已经成为爬虫必备利器&#xff0c;为什么不把requests直接装到python标准库里呢&#xff1f;可以省去第…

rostopic echo /tf 筛选特定数据

rostopic echo /tf 筛选特定数据 在使用rostopic echo命令时&#xff0c;您可以使用参数-n指定输出的消息数量&#xff0c;并且可以使用参数-p将输出以消息格式打印。然而&#xff0c;rostopic echo命令本身并不支持直接筛选指定的消息。 如果想要筛选特定的消息&#xff0c;…

【Java程序设计】【C00368】基于(JavaWeb)Springboot的箱包存储系统(有论文)

TOC 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;博客中有上百套程序可供参考&#xff0c;欢迎共同交流学习。 项目简介 项目获取 &#x1f345;文末点击卡片…

Mybatis-核心配置文件 / Mybatis增删改查

1. 核心配置文件 1.1. 概述 核心配置文件是MyBatis框架中用于集中定义全局配置信息的XML文件&#xff0c;其内部包含了一系列预设标签&#xff0c;用于设置数据库连接、对象映射、类型处理等关键参数。这些标签遵循特定的排列顺序&#xff0c;尽管并非所有标签都是强制性的&a…

【LVGL-选项卡部件(lv_tabview_create)】

LVGL-选项卡部件&#xff08;lv_tabview_create&#xff09; ■ LVGL-选项卡部件&#xff08;lv_tabview_create&#xff09;■ 综合示例&#xff1a; ■ LVGL-选项卡部件&#xff08;lv_tabview_create&#xff09; ■ 综合示例&#xff1a; 装饰部分