归并排序和快速排序比较【算法设计与分析实验报告】

这篇实验报告探讨了归并排序和快速排序在不同数组长度下的性能。尽管在纳秒级别调整了时间测量,但测试结果显示,对于较小的数组,两者时间差异不大;而当数组长度超过一定值,快速排序通常更快。考虑到易用性和实现复杂性,作者倾向于快速排序。
摘要由CSDN通过智能技术生成

       下面的源代码是修改的了时间差精确到了纳秒级别的了,但是还是感觉很有误差。无论怎么测,总是快排比归并快,即使是测试数据的数组长度在10以内。

        前面一样的程序写的是时间精确到微秒级的,数组长度大概在一万以内的,就是归并排序快了,大于这个长度的快速排序比较快。综合上面的情况,数组小时,二者时间差也不会太多,所以个人认为还是快速排序比较好了,唉还是觉得归并比较简单好写,弱爆了啊。。。

#include<cstdio>
#include<Windows.h>
#include<ctime>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;

const int maxn = 100000000;     /* maxn 为数组最大值 */
/*
*a[]为随机产生的数组 , b[]复制随机数组,t[]用于归并排序,暂时保存a[]
*/
int a[maxn];
int b[maxn], t[maxn];
int n;                        /* n为要比较的数的个数 */

/*
*对数组下标从 p到r之间的数进行排序
*使得前面的数全都不大于基准元, 后面的数不小于基准元
*/
int partition(int p, int r)
{
	int i = p;
	int j = r+1;
	int x = a[p];

	while(true)
	{
		while(a[+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值