ESP-IDF:插入排序和希尔排序测试

news2024/11/18 16:36:36

代码:

/插入排序和希尔排序测试/
void printArray14(int arr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}

void insertSort(int arr[], int start, int end)
{
// 无序插入有序队列,先把第一个元素看成有序队列,从把它后面的无序队列元素依次插入
int j;
for (int i = 1; i <= end; i++)
{ // 数组的下标从0开始,从下标1开始往前插
if (arr[i] < arr[i - 1])
{

        int temp = arr[i]; // temp保存要插入的数据
        for (j = i - 1; j >= 0 && arr[j] > temp; j--)
        {                        // arr[j]是前面的有序队列的下标,有序队列从右向左依次同temp比较
            arr[j + 1] = arr[j]; // 如果arr[j]比temp大,往后移动,
        }
        arr[j + 1] = temp; // 如果arr[j]小于等于temp,把temp放在arr[j+1]这个位置
    }
}

}

void shellSort(int arr[], int start, int end)
{
int increasement = (end + 1) / 3 + 1;
int i, j, k;
do
{
increasement = increasement / 3 + 1; // 确定分组
for (i = 0; i < increasement; i++)
{ // 分别处理每个分组
for (j = i + increasement; j <= end; j += increasement)// arr[j]是第一无序数据
{
if (arr[j - increasement] > arr[j]) // arr[j]同该组前面最后一个有序数据比较,如果小于才开始进行往前插入操作
{
int temp = arr[j];
for (k = j - increasement; k >= 0 && arr[k] > temp; k -= increasement)// arr[k]是前面的有序数据,如果大于temp,把arr[k]往后移动
{
arr[k + increasement] = arr[k];
}
arr[k + increasement] = temp; // 如果arr[k]小于等于temp,把temp放到arr[k+increasement]
}
}
}
} while (increasement > 1);//增量逐渐减少,也就是分组逐渐减少,最后进行一次全排序
}

void test14()
{
cout << “--------test 插入排序--------” << endl;

int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
printArray(arr, sizeof(arr) / sizeof(int));
insertSort(arr, 0, sizeof(arr) / sizeof(int) - 1); // 注意数组下标是从0开始的
printArray(arr, sizeof(arr) / sizeof(int));
cout << "--------test 希尔排序--------" << endl;
int arr02[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
printArray(arr02, sizeof(arr02) / sizeof(int));
shellSort(arr02, 0, sizeof(arr02) / sizeof(int) - 1);
printArray(arr02, sizeof(arr02) / sizeof(int));

}

extern “C” void app_main(void)
{

test14();

}

结果:

在这里插入图片描述

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

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

相关文章

BM19 寻找峰值

目录 描述 示例1 思路&#xff1a; 代码&#xff1a; 描述 给定一个长度为n的数组nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格…

专访三维空间雷成老师 | 原来水墨画风格的3D建筑动画可以如此惊艳……

CGarchitect 是业界赫赫有名的国际3D建筑赛事&#xff0c;2005年首次举办至今已成功举办了17届大赛&#xff0c;每年都吸引了全球许多知名的建筑设计工作室、动画工作室、艺术家及学生参赛。2021年的CGarchitect奖项类别包括图像组、影片组和交互组&#xff0c;其中图像组和影片…

【Rust】17. Rust 中的并发

17.1 线程 17.1.1 spawn&#xff1a;创建新线程 thread::spawn&#xff1a;创建一个新线程&#xff0c;需要传递一个闭包&#xff0c;并在其中包含希望在新线程运行的代码thread::sleep&#xff1a;调用强制线程停止执行一小段时间。比如&#xff1a;thread::sleep(Duration::…

深入理解MySql(一)MySql视图、存储过程、预处理语句、触发器、定时器

MySql视图、存储过程、预处理语句、触发器、定时器 1、视图 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 视图只保存了查询的…

iOS面试- 0x02 WebView

有了UIWebView&#xff0c;为什么还需要WKWebView&#xff1f; UIWebVieW的缺点&#xff1a; 笨重难用、内存泄露、内存消耗大&#xff0c;性能差 —— WKWebView提高性能 WKWebView 拥有60fps滚动刷新率和safari相同的js引擎等优势。 1、WKWebView 白屏问题 WKWebView是一个多…

ElasticSearch6.x版本的Scroll滚动查询讲解及Kibana和SpringBoot实操演示

文章目录一、Scroll滚动查询介绍二、Kibana上操作三、SpringBoot中操作四、总结一、Scroll滚动查询介绍 ElasticSearch中在进行普通的查询时&#xff0c;默认只会查询出来10条数据。我们通过设置ElasticSearch中的size可以将最终的查询结果从10增加到10000。但这时候如果我们需…

Sensor曝光和帧率基础知识

Sensor曝光和帧率基础知识1. 简介2. H_BLANK和V_BLANK3. 曝光原理3.1 Sensor逐行曝光基本原理3.2 Sensor全局曝光基本原理4. 曝光时间计算公式4.1 曝光一行的时间line_timeline\_timeline_time4.2 曝光一帧的时间exposure_timeexposure\_timeexposure_time4.3 帧率(fps)的计算1…

2023,“蔚小理”真的经不起更多“事故”了

历史总是惊人的相似。2013年&#xff0c;哈弗品牌独立出来&#xff0c;与长城品牌并行运营&#xff0c;当时推出两年的哈弗H6正卖得火热&#xff0c;推动SUV这个细分品类在中国快速成长&#xff0c;中国自主品牌也借SUV开始攻占被合资品牌占领的市场。时移势易。十年后的2023年…

浅析TSINGSEE车载监控平台助力城市公交智能监管的方案设计

道路运输已成为铁路以外最重要的地面运输方式&#xff0c;在国民经济和社会发展中发挥着举足轻重的作用。然而&#xff0c;随着汽车的普及和交通需求的快速增长&#xff0c;道路运输带来的交通拥堵、交通事故和环境污染等负面影响日益突出&#xff0c;逐渐成为全球经济社会发展…

Baklib支招 ——如何帮助企业创建内部维基(wiki)?

企业维基&#xff08;wiki&#xff09;的重要的好处就是&#xff1a;可以按照个性化的理解和需求进行编辑&#xff0c;而不担心被别人修改。这个个人维基可以作为自己的外挂大脑使用&#xff0c;但是不要成为一个垃圾筐&#xff0c;什么都往里装&#xff0c;扔进去就再也不看了…

计算机SCI论文重复率需要控制在多少? - 易智编译EaseEditing

SCI论文的重复率一般在20%左右&#xff0c;一般是没有没问题的。 SCI期刊在检查论文重复率时&#xff0c;并不是简单的只看总重复率&#xff0c;还有单篇重复率。 目前有很多SCI期刊都会先查重&#xff0c;看重复率&#xff0c;但也会看内容。 而且&#xff0c;重复率高也不一定…

lio-sam学习笔记(一)

前言&#xff1a; 对于lio-sam框架的安装配置。 每一回不同框架的配置真是要了老命了。。。 一、安装依赖 官方github&#xff1a; GitHub - TixiaoShan/LIO-SAM: LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping lio-sam主要有两个依赖&am…

6.深度学习和计算

6.深度学习和计算 目录 层和块 自定义块顺序块在前向传播函数中执行代码 参数管理 参数访问 目标参数一次性访问所有参数从嵌套块收集参数 参数初始化 内置初始化自定义初始化 参数绑定 自定义层 不带参数的层带参数的层 读写文件 加载和保存张量加载和保存模型参数使用GPU 计…

JS中函数声明与函数表达式的区别

1、函数定义 JavaScript 中定义函数最常用的方式是函数声明和函数表达式。这两种技术非常相似&#xff0c;有时甚至难以区分&#xff0c;它们之间还是存在着微妙的差别。 JavaScript 定义函数的最基本方式是函数声明&#xff1a; 函数声明必须独立&#xff0c;但也能够被包含在…

REST开发

REST风格一、简介优点REST风格二、使用三、注解PathVariableResponseBody、RequestParam和PathVariable区别应用快速开发一、简介 REST&#xff08;Representational State Transfer&#xff09;&#xff0c;表现形式状态转换 传统风格资源描述形式 http://localhost/user/ge…

Smartbi电子表格软件集成的优势

Smartbi电子表格软件作为国内顶尖的企业报表工具&#xff0c;具有“真Excel”特色&#xff0c;直接用Excel作为设计器&#xff0c;仅需安装一个插件就可以解决众多报表难题。无需增加学习成本&#xff0c;学习一个新的设计器&#xff0c;更能解决Excel的取数、性能等问题&#…

Wireless M-Bus介绍-摘自OMS

Wireless M-Bus(wM-Bus或无线M-Bus)是成熟的Wired M-Bus(有线M-Bus)标准的后续增强。2003年&#xff08;这里估计是资料错误,第一个无线M-Bus的标准是2013年的&#xff09;&#xff0c;EN 13757-4首次对其进行了描述&#xff08;&#xff1f;&#xff09;。该标准为M-Bus层模型…

Python 全栈系列216 APIFunc.Database启动流程

说明 上次做了一些改进,现在关注使用的流程。 内容 1 基础概念 能大约知道大致的几个部分有助于记忆操作步骤,以后这个项目的代号就是ABD了。 1 所有启动相关的代码全部封装在镜像apifunc_database_model1:v3,基于这个镜像就可以启动一个所有对应的服务流2 在Portal上有相关…

为WEB3 的GameFi行业爆发提供全新动力

WEB3 GameFi的突破口在2022年末Octopus Network Co-founder Louis指出&#xff0c;GameFi要完成2023年的全新爆发需要将所有权与经营权分离&#xff0c;所有用户共同参与由平台成长带来的市场红利&#xff0c;单一的Gamefi将会更加产品化&#xff0c;体验化&#xff0c;具备整合…

详解树状数组

前言树状数组或二叉索引树&#xff08;Binary Indexed Tree&#xff09;&#xff0c;又以其发明者命名为 Fenwick 树。其初衷是解决数据压缩里的累积频率的计算问题&#xff0c;现多用于高效计算数列的前缀和、区间和。它可以以 O(logn) 的时间得到任意前缀和。并同时支持在 O(…