归并排序 自带时间复杂度测试

//时间复杂度  O(N*log2N) 
//稳定程度: 稳定
/*
确定分界点,中间位置
两端排序
归并,合二为一
*/#include<iostream>
#include<time.h>
using namespace std;
int tmp[250001];
void Sort(int List[], int l, int r);int main()
{int a[250000];int k, j;// 设置种子srand((unsigned)time(NULL));/* 生成 10 个随机数 */for (k = 0; k < 250000; k++){// 生成实际的随机数j = rand();a[k] = j;}clock_t start_time = clock();Sort(a,0,250000-1);clock_t end_time = clock();//for (int i = 0; i < 200000; i++)//{//	cout << a[i] << " ";//}cout << "\n程序段运行时间:" << static_cast<double> (end_time - start_time) / CLOCKS_PER_SEC * 1000 << "ms" << endl;system("pause");
}
void Sort(int List[], int l, int r)
{if (l >= r) return;int mid = l + r >> 1;  //取中间数Sort(List, l, mid), Sort(List, mid + 1, r); //左右递归排序int k = 0, i = l, j = mid + 1; //k表示已合并数组中有几个元素,分开两个有序数组while (i <= mid && j <= r) //进行双指针比较if (List[i] <= List[j]) tmp[k++] = List[i++];  else tmp[k++] = List[j++];while (i <= mid) tmp[k++] = List[i++]; //分别处理剩余部分while (j <= r) tmp[k++] = List[j++];for (i = l, j = 0; i <= r; i++, j++) List[i] = tmp[j]; //拷入原空间}

 

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

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

相关文章

python 图像变化检测_python hough变换检测直线的实现方法

1 原理2 检测步骤将参数空间(ρ,θ) 量化成m*n(m为ρ的等份数&#xff0c;n为θ的等份数)个单元&#xff0c;并设置累加器矩阵&#xff0c;初始值为0&#xff1b;对图像边界上的每一个点(x,y)带入ρxcosθysinθ&#xff0c;求得每个θ对应的ρ值&#xff0c;并在ρ和θ所对应的…

ruby elixir_如何使用Elixir和Phoenix快速入门构建CRUD REST API

ruby elixir这篇文章将展示如何使用Elixir和Phoenix框架构建REST API。 重点将是为持久化到Postgres数据库后端的模型提供CRUD&#xff08;创建&#xff0c;读取&#xff0c;更新&#xff0c;删除&#xff09;端点。 我应该警告你&#xff1b; 这是一个简单的例子。 但是&#…

LeetCode 07. 整数反转

原题描述 个人解法思路 class Solution { public:int reverse(int x) {int temp0;//需要返回的最后结果while(x!0){if(temp>INT_MAX/10 || temp<INT_MIN/10)return 0;temptemp*10x%10; //个位变十位 同理xx/10; //进行降位} return temp;} };

苹果开发者账号可以创建多少测试证书_ios苹果企业账号你所不知道的那些点

在2019年的时候苹果审核机制一下子就变得越来越严格了&#xff0c;现在我们想要通过苹果的官方网站去申请一个全新的ios苹果企业账户就是会非常的困难&#xff0c;很多公司有的也没有达到资格&#xff0c;ios开发商在申请苹果企业账号的时候&#xff0c;一方面需要像苹果提供大…

slf4j 记录日志文件_教程:正确的SLF4J日志记录用法以及如何检查它

slf4j 记录日志文件SLF4J是一个非常流行的日志记录外观&#xff0c;但是&#xff0c;就像我们使用的所有库一样&#xff0c;我们有可能以错误的方式或至少以一种非最佳方式使用它。 在本教程中&#xff0c;我们将列出常见的日志记录错误以及如何使用FindBugs检测到它们。 我们…

Leetcode 146. LRU 缓存机制

原题链接 题解&#xff1a;双链表哈希表 class LRUCache { public:struct Node {int key, val;Node *left, *right;Node(int _key, int _val): key(_key), val(_val), left(NULL), right(NULL) {}}*L, *R;unordered_map<int, Node*> hash;int n;void remove(Node* p) {…

Leetcode 28. 实现 strStr()

原题链接 解&#xff1a;KMP算法 class Solution { public:int strStr(string s, string p) {if (p.empty()) return 0;int n s.size(), m p.size();s s, p p;vector<int> next(m 1);for (int i 2, j 0; i < m; i ) {while (j && p[i] ! p[j …

jsf和jsp_带有JSF,Servlet和CDI的DynamicReports和JasperReports

jsf和jsp在此示例中&#xff0c;我将展示如何将DynamicReport和JasperReports与Servlet和CDI集成。 工具&#xff1a; TIBCO Jaspersoft Studio-6.0.4。最终版 Eclipse Luna服务版本2&#xff08;4.4.2&#xff09;。 WildFly 8.x应用程序服务器。 这是Eclipse上项目层次结…

接口隔离原则_设计模式的三大分类及六大原则

设计模式(Design pattern)代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式分为三大类&…

Leetcode 24. 两两交换链表中的节点

原题链接 题解&#xff1a; 1.头部会改变创建虚拟头结点 2.前两个点定义为a,b&#xff0c;c 3.p指向b,a指向c,b指向a ; p指向本段最后一个结点。 class Solution { public:ListNode* swapPairs(ListNode* head) {auto dummy new ListNode(-1);dummy->next head;for (a…

spring aop不执行_使用Spring AOP重试方法执行

spring aop不执行我的一位博客关注者发送了一封电子邮件&#xff0c;要求我显示“ Spring AOP的RealWorld用法”示例。 他提到&#xff0c;在大多数示例中&#xff0c;都演示了Spring AOP在日志记录方法进入/退出或事务管理或安全性检查中的用法。 他想知道Spring AOP在“针对…

LeetCode 09. 回文数

原题链接 class Solution { public:bool isPalindrome(int x) {if(x<0)return false;if(x>0 && x<10)return true;long long temp 0;int xx x;while(x!0){int n x % 10;temp temp * 10 n;x /10;}if(temp xx)return true;else{return false;}} };

python 获取文件名_真实需求 | Python+os+openpyxl 批量获取Excel的文件名和最大行数...

1. 提出需求 这已经不知道是粉丝问我的第几个办公自动化的问题了&#xff0c;并且这些问题都是大家在学习和工作中碰到过的真实问题场景。其实从下图中已经可以很明确的看出别人的需求了&#xff0c;我这里就不用在赘述了&#xff0c;下面直接上思路吧&#xff01;2. 解题思路为…

LeetCode 03. 无重复字符的最长子串

原题链接 解题思路: (双指针扫描) O(n)&#xff0c;双指针主要作用是维护一段区间 定义两个指针 i,j(i<j)&#xff0c;表示当前扫描到的子串是 [i,j] (闭区间)。扫描过程中维护一个哈希表unordered_map<char,int> hash&#xff0c;表示 [i,j]中每个字符出现的次数。…

python元组取值_Python基础之元组

元组初识元组的认识首先&#xff0c;我们来认识一下元组&#xff1a;# 定义一个元组uesr_tuple ("zhangsan", "lisi", "wangwu")# 定义一个空元组empty_tuple ()元组的作用和定义通过前面的学习&#xff0c;我们知道&#xff0c;列表通常用来存…

junit5和junit4_JUnit 5 –下一代JUnit的初步了解

junit5和junit42月初&#xff0c; JUnit 5&#xff08;又名JUnit Lambda&#xff09;团队发布了一个alpha版本。 由于JUnit 4是我工具箱中使用最多的项目之一&#xff0c;因此我认为值得一看下一个主要版本。 我试用了最新版本&#xff0c;并记下了我在这里发现值得注意的更改…

python进阶装饰器_老生常谈Python进阶之装饰器

函数也是对象要理解Python装饰器&#xff0c;首先要明白在Python中&#xff0c;函数也是一种对象&#xff0c;因此可以把定义函数时的函数名看作是函数对象的一个引用。既然是引用&#xff0c;因此可以将函数赋值给一个变量&#xff0c;也可以把函数作为一个参数传递或返回。同…

LeetCode 02.两数相加

原题链接 解题思路&#xff1a; 本题可以使用模拟法&#xff0c;从链表的结点中提取出val逐个相加&#xff0c;没有值取0。并且记录进位&#xff0c;每个节点只保留个位数&#xff0c;所以需要使用sum与10取模&#xff0c;如果最高位存在进位则需要在最后添加一个val为1的节点…

apache ignite_从In Memory Data Grid,Apache Ignite快速入门

apache igniteIMDG或内存数据网格不是内存中关系数据库&#xff0c;NOSQL数据库或关系数据库。 它是另一种软件数据存储库。 数据模型分布在单个位置或多个位置的许多服务器上。 这种分布称为数据结构。 这种分布式模型被称为“无共享”架构。 IMDG具有以下特征&#xff1a; 所…

bvp解算器是什么_那些学习了编程的中学生,为什么会更可能成功?

来源 | 异步当你看到这个题目&#xff0c;或许会想&#xff0c;这不是搞笑吗&#xff1f;众所周知&#xff0c;高等数学是编程的基础和前提&#xff0c;而说起程序编写员&#xff0c;在普通人眼里就是数学学霸的代名词&#xff0c;人们往往会把它和那些数学天才的名字联系在一起…