#define swap(a, b) {\
a ^= b, b ^= a, a ^= b; \
}
#define TEST(arr, n, func, args...) { \
int *num = (int *)malloc(sizeof(int) * n);\
memcpy(num, arr, sizeof(int) * n);\
output(num, n);\
printf("%s = ", #func);\
func(args);\
output(num, n);\
free(num);\
}
//插入排序O(N2)
void insert_sort(int *num, int n) {
for (int i = 1; i < n; i++) {
for (int j = i; j > 0 && num[j] < num[j - 1]; j--) {
swap(num[j], num[j - 1]);
}
}
return ;
}
//冒泡排序 O(N2)
void bubble_sort(int *num, int n) {
int times = 1;
for (int i = 1; i < n && times; i++) {
times = 0;
for (int j = 0; j < n - i; j++) {
if (num[j] <= num[j + 1]) continue;
swap(num[j], num[j + 1]);
times++;
}
}
return ;
}
//归并排序O(NlogN)
void merge_sort(int *num, int l, int r) {
if (r - l <= 1) {
if (r - l == 1 && num[l] > num[r] ) {
swap(num[l], num[r]);
}
return ;
}
int mid = (l + r) >> 1;
merge_sort(num, l, mid);
merge_sort(num, mid + 1, r);
int *temp = (int *)malloc(sizeof(int) * (r - l + 1));
int p1 = l, p2 = mid + 1, k = 0;
while (p1 <= mid || p2 <= r) {
if (p2 > r || (p1 <= mid && num[p1] <= num[p2])) {
temp[k++] = num[p1++];
} else {
temp[k++] = num[p2++];
}
}
memcpy(num + l, temp, sizeof(int) * (r - l + 1));
free(temp);
return ;
}
void randint(int *num, int n) {
while(n--) num[n] = rand() % 100;
return;
}
void output(int *num, int n) {
printf("[");
for (int i =0; i < n; i++) {
printf(" %d", num[i]);
}
printf("]\n");
return;
}
int main() {
srand(time(0));
#define max_op 22
int arr[max_op] = {0};
randint(arr, max_op);
TEST(arr, max_op, insert_sort, num, max_op);
TEST(arr, max_op, bubble_sort, num, max_op);
TEST(arr, max_op, merge_sort, num, 0, max_op - 1);
return 0;
}
相关推荐
如何设计一个处理物联网设备数据流的后端系统。
设计一个处理物联网设备数据流的后端系统,需要综合考虑设备数据采集、传输、处理、存储等多个方面,保证系统能够处理海量数据,具备高可用性、扩展性和安全性。合理选择适当的技术架构和工具(如MQTT、Kafka、InfluxDB等),并确保系统能够灵活应对不断变化的业务需求和设备接入。
十大经典排序算法
0、排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算法执行所耗费的时间。空间复杂度:运行完一...
服务器安全配置:二、本地安全策略设置
密码最长使⽤期限”设置为“90天”;“⽤可以还原的加密来存储密码”设置为“禁⽤”“复位账户锁定计数器”设置为15分钟,贴图这里是我自己设置的时间,15分钟也够用,具体看自己需要。”网络访问: 不允许 SAM 帐户和共享的匿名枚举“设置为“已启用””网络访问: 限制对命名管道和共享的匿名访问“设置为“已启用””网络访问: 不允许匿名枚举 SAM 帐户“设置为“已启用”“关机: 允许系统在未登录的情况下关闭”设置为“已禁用”(1)交互式登录:不显示最后的⽤户名”设置为“已启⽤”
HDOJ1872(稳定排序)
稳定排序 Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1066Accepted Submission(s): 408 Problem Description 大家都知道,快速排序是不稳定的排序方法。 如果对于...
流媒体学习之路(mediasoup)——simulcast 与 svc 简介(7)
流媒体学习之路(mediasoup)——simulcast 与 svc(7) 文章目录流媒体学习之路(mediasoup)——simulcast 与 svc(7)
深入解析璞致PZ-ZU47DR RFSoC核心板:硬件架构与多通道ADC/DAC设计实战
本文深入解析璞致PZ-ZU47DR RFSoC核心板的硬件架构与多通道ADC/DAC设计实战。作为Xilinx Zynq UltraScale+ RFSoC系列的代表产品,PZ-ZU47DR集成了8通道5GSPS ADC和8通道9.85GSPS DAC,支持直接射频采样,大幅简化射频链路设计。文章详细介绍了其技术优势、设计挑战及实战技巧,为5G小基站、毫米波等应用场景提供高效解决方案。
稳定排序和非稳定排序
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相...
深入LSM6DSL的FIFO连续模式:基于STM32和MEMS库的数据流高效处理指南
本文深入探讨了LSM6DSL的FIFO连续模式,结合STM32硬件平台和ST官方MEMS库,提供了高效的数据流处理方案。通过优化I2C通信时序、中断驱动设计以及动态ODR调整,实现低功耗数据采集与处理,显著提升嵌入式传感器应用的性能和续航能力。
稳定排序和不稳定排序
首先,首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,...
ATE测试的未来:自动化与智能化的技术演进
本文探讨了自动测试设备(ATE)在半导体产业中的技术演进,重点关注自动化与智能化的发展趋势。随着芯片制程的不断进步,ATE面临测试复杂度激增和成本压力等挑战。文章分析了AI技术在测试优化中的应用,如自适应测试和缺陷预测,以及模块化架构和端到端测试生态系统的创新。这些技术突破显著提升了测试效率和设备利用率,为半导体测试的未来发展指明了方向。
系规备考论文:论IT服务规划设计
系规备考论文:论IT服务规划设计
什么是稳定的排序方法
什么是稳定的排序方法 稳定的排序方法 设关键字Ki=Kj,且排序前的序列中Ki领先于Kj,若排序后Ki仍然领先于Kj,则称这个排序方法是稳定的 不稳定排序:快速排序、希尔排序、堆排序 稳定排序:冒泡排序,直接插入排序、归并排序、基数排序 不确定:简单选择排序(插入版稳定,交换版不稳定) ...
学Simulink--基于多物理场耦合与系统集成的储能系统场景实例:压缩空气储能(CAES)系统的热力学建模与效率分析
本文提供了一个基于Simulink的压缩空气储能(CAES)系统热力学建模教程。通过多物理场耦合方法,详细演示了从系统架构设计到仿真测试的全过程,包括多级压缩机/膨胀机系统搭建、显热蓄热系统设计以及效率分析。文章重点强调了热管理对提升CAES效率的关键作用,并给出了68%电-电效率的优化案例。最后提出了变工况建模、不同蓄热介质对比等高级优化方向,为开发零碳大容量储能系统提供了实用工具和方法。
排序算法问题:稳定排序与不稳定排序
转载自:https://www.cnblogs.com/codingmylife/archive/2012/10/21/2732980.html 稳定排序和不稳定排序 这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的...
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
efm32 入门.pdf
本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。
稳定排序与不稳定排序的区别
稳定和不稳定排序详解 参考:https://www.jianshu.com/p/7c03e5eb143c 稳定排序有:插入排序、冒泡排序、归并排序、基数排序 不稳定排序有:选择排序、快速排序、希尔排序、堆排序 稳定排序 插入排序: 在一个有序的序列中插入一个数,使插入后的序列保持有序。 因为插入的过程中都是从后向前进行查找,遇到小于等于(或大于等于)的数停止寻找,进行插入操作。 不改变排序前后相等数值的相对顺序,故使稳定的排序算法。 冒泡排序: 冒泡故名思义,数值小的向上飘,数值大的向下
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
【C++】稳定排序和不稳定排序
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序...
NTscan扫描工具
ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。
HDU1872 稳定排序【稳定排序】
稳定排序 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10289 Accepted Submission(s): 3742 Problem Description 大家都知道,快速排序是不稳定的排序方法。 如果对于数组中出现的任...
彻底搞懂排序算法!从稳定排序到不稳定排序的全面解析
排序算法是编程世界的基础,也是面试中的常客。但你真的搞清楚了哪些算法是的,哪些是的吗?别担心,这篇文章将带你轻松搞懂常见排序算法,并彻底掌握“稳定”和“不稳定”排序的核心区别。无论你是新手还是想加深理解,本文都将是你不可错过的宝藏。
排序的稳定性
稳定性定义:排序前后两个相等的数相对位置不变,则算法稳定。 稳定性得好处:从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。 各排序算法的稳定性: (图源水印) 稳定的: 冒泡排序:小的元素往前调或者把大的元素往后调;比较是相邻的两个元素比较,交换也发生在这两个元素之间; 因为相等的元素不会进行交换,所以稳定 插入排序:已经有序的小序列的基础上,一次插入一个元素;...
稳定排序的概念
文章目录什么是稳定排序?稳定排序的意义:哪些些排序方法一定是稳定排序 什么是稳定排序? 假设我们有如下序列:51,1,3,52{5_1, 1, 3, 5_2}51,1,3,52,其中有两个相同的 555;稳定排序与不稳定排序分别如下: 稳定排序:1,3,51,52{1, 3, 5_1, 5_2}1,3,51,52;两个 555 的顺序没有变; 不稳定排序:1,3,52,51{1, 3,...
为什么要区分稳定和不稳定排序
排序算法,相信你不会陌生~快排、冒泡、选择、归并等等,几大排序算法中,有的是稳定排序,有的则是不稳定排序。但是你有没有想过,既然排序得到的结果都是有序的,为什么还要区分稳定与不稳定呢?
稳定排序和不稳定排序的区别和代表
关于排序稳定性的定义 通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。 问题来了,什么时候必须要求使用稳定排序呢? 由上面的定义可知道稳定性排序保证了排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。 那么,当现实应用中排序的需求需要区别先后...
838



被折叠的 条评论
为什么被折叠?



