【数据结构】 实验报告13 各排序算法时间性能比较

实验报告——各种排序算法及性能分析 通过实际编码实现和对比不同算法的性能,我加深了对每种算法的理解,并学会了如何选择合适的排序算法来解决不同的问题。6.简单选择排序 (selectionSort 函数)选择排序算法是一种原址比较排序算法,它的工作原理是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。5.快速排序 (quickSort 函数和)快速排序是一种分而治之的排序算法,它通过选取一个枢纽元素,并围绕它重新排列序列,使得枢纽左侧的所有元素都不大于枢纽,右侧的所有元素都不小于枢纽。 阅读详情

一、实验目的和要求

目的:给出一组实验来比较排序算法的时间性能
要求:
(1)时间性能
(2)实验数据应具有说服力
(3)实验结果要能以清晰的形式给出,如图、表等。
(4)算法所用时间必须是机器时间,也可以包括比较和交换元素的次数。
(5)实验分析及其结果要能以清晰的方式来描述,如数学公式或图表等。
(6)要给出实验的方案及其分析。

二、实验环境

软件环境:visual stdio 2017
硬件环境:①CPU:Intel(R)Core(TM)i7-8565U CPU @1.80Ghz
②内存:8.0GB

三、实验内容

给出一组实验来比较排序算法的时间性能

四、实验过程

4.1 任务定义和问题分析

选取若干个排序算法,对每种算法进行大量数据测试,同一规模的数据进行3次测试取平均值,最终得到若干个实验数据,进行绘图展示。

4.2 数据结构的选择和概要设计

本次实验选取直接插入排序,希尔排序,冒泡排序,快速排序,直接选择排序,堆排序,归并排序这7种算法。
分为2个大实验组,第一个大实验组为算法时间复杂度为O(n²)的算法,其中有直接插入排序,冒泡排序,直接选择排序。
第二个实验组为算法时间复杂度为O(nlogn)的算法,其中有希尔排序,快速排序,堆排序,归并排序。
4.3 详细设计
在第一个实验组中,选取规模分别为1000,5000,10000,50000,75000,100000,125000,175000,200000,250000的数据,每种数据测试三次取平均值。
在第二个实验组中,选取规模分别为10000,100000,200000,250000,500000,600000,750000,900000,1000000,10000000,25000000,30000000,40000000,50000000,60000000,75000000,100000000的数据,每种数据测试三次取平均值。在这些数据中,以1000000为分界点,分别制图。
制图采用python中的matplotlib工具,制作曲线图。
在这里插入图片描述

  • 直接插入排序
template<typename T>
void insert_sort(T array[], int n)
{
	for (int i = 1; i < n; i++)
	{
		T temp = array[i];
		int j = i - 1;
		while (array[j] > temp&&j >= 0)
			array[j + 1] = array[j--];
		array[j + 1] = temp;
	}
}
  • 希尔排序
template<typename T>
void shell_sort(T array[], int n)
{
	int d = n / 2;
	while (d > 0)
	{
		for (int i = d; i < n; i++)
		{
			T temp = array[i];
			int j = i - d;
			while (j >= 0 && temp < array[j])
			{
				array[j + d] = array[j];
				j -= d;
			}
			array[j + d] = temp;
		}
		d = d / 2;
	}
}
  • 冒泡排序
temp
数据结构实战开发教程(八)选择排序和插入排序、冒泡排序和希尔排序、归并排序和快速排序、排序的工程应用示例 排序是计算机内经常进行的一种操作,其目的是将一组 “无序” 的数据元素调整为 “有序” 的数据元素。 按总评排序后为什么张无忌的排名比郭靖靠前呢?因为采用的不稳定排序法。 多关键字排序是否比单关键字排序更复杂?对于多关键字排序,只需要在比较操作时同时考虑多个关键字即可!!!class Sort;每次(例如第i次,i = 0,1,..., n-2)从后面n-i个待排的数据元素中选出关键字最小的元素,作为有序元素序列第i个元素。当插入第i(i≥ 1)个数据元素时,前面 阅读详情

相关推荐

实验 9 排序算法实验比较

数据结构课程实验九代码,仅供参考~ 实验目的 基于教材内容,任选两种排序算法,实现并比较性能。 基本要求 (1)至少要有一种排序算法的性能优于 O(n2 ) (2)对实现的排序算法进行实验比较,实验比较数据参见教材 7.8 章节 (3)排序算法要基于教材,测试输入的整数数据文件(5 个,文件中数据规模分别是 100,1K,10K,100K 和 1M),排序结果也要输出到文件中。 (4)要在屏幕上输出排序过程所花费时间。

深入浅出一文搞懂Raft协议

前言 在分布式的世界里,要说最核心最复杂的功能,一致性的实现无出其右,之前的paxos算法堪称经典,被认为是同类算法中效果最好的,基本上成为分布式一致性的代名词,但是paxos算法也是出了名的难理解,而且相当不好实现。本人也花了很多时间、看了很多材料也没有真正理解。所以基于paxos的思想进行的一致性算法的简化和实现就成为了现实的需求,在此背景下,本文的主角Raft就出现了。 Raft算法的头号目标就是容易理解(UnderStandable),这从论文中就可以看出来。当然,R...

microGP的专栏 6485

高阶玩法——Dify生成的数据自动写入mysql数据库

采用自定义工具方式,利用 python编写一个服务sql_save_post,将接收到的内容写入指定数据库的表中,并为该服务撰写一个 OpenAPI 的 schema。配置工作流:我们以写入天气预报为例,在生成天气预报内容后,连接自定义工具“sql_save_post”,将所需的字段配置完成后,实现将生成的内容自动写入mysql数据库中。编写OpenAPI的schema:在dify平台的工具栏目,创建自定义工具,输入工具名称“sql_save_post”。工具:sql_save_post;

qq_44493378的博客 8539

AlphaFold-multimer 复合物结构预测

是DeepMind开发的AlphaFold项目的一个扩展,旨在预测蛋白质多聚体的三维结构。蛋白质多聚体是由多个蛋白质亚单位相互组装而成的结构,如酶、膜蛋白复合物和病毒颗粒。理解多聚体的结构对于揭示蛋白质的功能和相互作用非常重要。

MurphyStar的博客 5647

Simulink实战:火电机组一次调频与AGC协同控制建模与仿真解析

本文详细解析了如何使用Simulink进行火电机组一次调频与AGC协调控制的建模与仿真。通过系统架构设计、参数设置和模块实现,阐述了如何实现两者的协同控制,确保电网频率稳定。文章提供了实用的建模技巧、参数整定经验和性能评估方法,为电力系统仿真工程师提供了有价值的实践指导。

c7d8e9的博客 308

PowerDesigner16.5下载和安装教程

一、软件下载 1.下载地址(不用复制,直接点击下载链接即可):链接:https://pan.baidu.com/s/1MSnWHWt3SO2Uz5dt9AANAg提取码:z9kk 二、软件安装 1.下载安装包(包含安装文件、汉化包、注册文件) 2.下载后文件内容如下 3....

cicong2374的博客 10万+

【ArcGIS遇上Python】ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换

由于论文的需要,将MODIS NDVI数据进行投影变换和格式转换,具体操作可以参照:《ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换》,但是该文章中的做法只能一次性实现一景影像的转换,没法批量,虽然ArcGIS中提供了Batch的方法但是需要挨个添加数据,确定输出路径等等,本文就实现以ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换。先来看投影后的效果: 在实现批量投影转换之前,需要两个投影文件:Sinusoidal.prj和MyAl

智慧空间实验室 3815

第四部分:VTK常用类详解(第96章 vtkCaptionActor2D标题演员类)

VTK标题演员实现3D场景标注功能 摘要:vtkCaptionActor2D是VTK可视化工具包中的标题标注组件,提供混合2D/3D的文本标注功能。该组件通过连接线将文本标注与场景中的3D点关联,支持多行文本显示、自定义文本样式和动态定位。文章详细介绍了标题演员的设计原理、坐标系统控制方法、文本内容管理和大小自适应机制,并展示了在3D模型标注、数据可视化和交互场景中的典型应用。标题演员通过组合文本、边框和连接线组件,实现了灵活多样的场景标注方案,是科学计算可视化中重要的标注工具。

仰望星空的博客 255

【TIDB】TiDB认证考试PTCA 练习题 题库

TiDB认证考试PTCA 练习题 题库

DBA之路的博客 4720

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: 2019安徽省程序设计竞赛 D自驾游 题解
下一篇: 【R语言学习笔记】三、R语言数据结构之矩阵
RealWeakCoder
博客等级 码龄7年 236粉丝 68原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值