算法与分析-实验一 算法设计基础
1. 分别用穷举法和欧几里德算法实现求两个整数的最大公约数,并比较算法的效率。
核心代码:
class Solution {public:int eaMethod(int a,int b) {//穷举法int res=1;int times = a>b?a:b;for (int i = 1; i <=times;i++) {if (a % i == 0 && b % i == 0)res = i;}return res;}int gcdMethod(int a,int b) {//欧几里德算法if (b == 0) return a;else return gcdMethod(b,a%b);}
};
2. 排序算法效率比较。编程实现以下几种不同的排序算法(以升序为例):冒泡排序、选择排序、 希尔排序、快速排序,比较不同的排序过程的运行时间。具体要求:(1)为了消除数据之间差异导致排序效果的影响,使用相同的数组进行排序,方法为:首先创建一个数组,数组长度至少为100000,数组元素取值范围在[0, 100000]之间的随机正整数,并将这个数组复制4份,分别用不同的排序算法进行排序。(2)记录不同排序算法的运行时间。(3)对完全逆序的情况进行测试,将待排序数组赋值为逆序,即与最终排序要求完全相反。
核心代码:
class Solution {public:void bubbleSort(int nums[], int len1) {int len = len1;for (int i = 0; i < len; i++) {//控制总的趟数for (int j = 1; j < len - i; ++j) {//一次冒泡排序的结果if (nums[j - 1] > nums[j]) swap(nums[j - 1], nums[j]);}}}void insertionSort(int arr[], int n){int i, j, key;for (i = 1; i < n; i++){key = arr[i]; j = i - 1;while (j >= 0 && arr[j] > key){arr[j + 1] = arr[j];j--;}arr[j + 1] = key;}}void shellSort(int arr[], int len)//希尔排序{int tmp;int i;for (int d = len / 2; d > 0; d /= 2){for (int j = d; j < len; ++j){tmp = arr[j];for (i = j; i >= d && arr[i - d] > tmp; i -= d)arr[i] = arr[i - d];arr[i] = tmp;}}}void selectionSort(int arr[], int len)//选择排序{for (int i = 0; i < len - 1; ++i){int index = i;for (int j = i + 1; j < len; ++j){if (arr[index] > arr[j])index = j;}swap(arr[index], arr[i]);}}int getStandard(int array[], int i, int j) {//基准数据 int key = array[i];while (i < j) {//因为默认基准是从左边开始,所以从右边开始比较 //当队尾的元素大于等于基准数据 时,就一直向前挪动 j 指针 while (i < j && array[j] >= key) {j--;}//当找到比 array[i] 小的时,就把后面的值 array[j] 赋给它 if (i < j) {array[i] = array[j];}//当队首元素小于等于基准数据 时,就一直向后挪动 i 指针 while (i < j && array[i] <= key) {i++;}//当找到比 array[j] 大的时,就把前面的值 array[i] 赋给它if (i < j) {array[j] = array[i];}}//跳出循环时 i 和 j 相等,此时的 i 或 j 就是 key 的正确索引位置//把基准数据赋给正确位置 array[i] = key;return i;}void QuickSort(int array[], int low, int high) {//开始默认基准为 lowif (low < high) {//分段位置下标 int standard = getStandard(array, low, high);//递归调用排序//左边排序 QuickSort(array, low, standard - 1);//右边排序 QuickSort(array, standard + 1, high);}}
};
算法与分析-实验一 算法设计基础相关推荐
- 格雷码算法c语言实验报告,算法设计与分析实验报告
本科生实验报告 课程名称:算法设计与分析 实验项目:递归和分治算法 实验地点:计算机系实验楼110 专业课:物联网1601学生.2016002105 学生姓名:于 指导员:郝晓丽 2018年5月4日 ...
- 算法设计与分析 实验五 算法综合实验
实验5.<算法综合实验> 一.实验目的 理解和复习所学各种算法的概念 掌握和复习所学各种算法的基本要素 掌握各种算法的优点和区别 通过应用范例掌握选择最佳算法的设计技巧与策略 二.实验内 ...
- 轻松入门机器学习数据挖掘算法——关联分析(Apriori算法)
小故事:20世纪90年代,沃尔玛超市在对顾客的购物记录进行购物篮分析时,发现了一个奇怪的现象: "啤酒"和"尿布"两件看上去毫无关系的商品,经常出现在同一个购物 ...
- 【图的着色问题】算法设计与分析实验1
计算机科学与工程学院实验报告 课程名称 算法设计与分析 班级 实验内容 实验1:图的着色问题 指导教师 姓名 重剑DS 学号 实验日期 2022.04.28 一.问题描述,含输入.输出数据内容.格式 ...
- C/C++ 算法设计与分析实验报告
算法设计与分析实验报告 算法实验整体框架的构建 菜单代码块 选择函数代码块 主函数代码块 实验模块Ⅰ:算法分析基础--Fibonacci序列问题 实验解析 Fibonacci序列问题代码块 实验模块Ⅱ ...
- 【图的同构识别】算法设计与分析实验2
计算机科学与工程学院实验报告 课程名称 算法设计与分析 班级 实验内容 实验2:图的同构识别 指导教师 姓名 重剑DS 学号 实验日期 2022.05.19 一.问题描述,含输入.输出数据内容.格式 ...
- 算法设计与分析——Johnson Trotter算法
目录 前言 一.算法思想分析 二.算法效率分析 三.算法代码 C语言代码 后记 前言 排列与组合问题,无论是在我们生活中还是项目实际运用中,都说非常之常见的.那么,如何去运用算法思想生成全排列(一组元 ...
- 随机选择算法时间复杂度分析
随机选择算法时间复杂度分析 首先提供算法的伪代码: 算法是递归算法 时间复杂度分析思路:计算每一次递归语句所消耗的时间,再求和. 为了分析需要,我们先定义如下的量: 定义状态j:数组长度在[(3/4) ...
- 压缩感知重构算法之正交匹配追踪算法(OMP)
算法的重构是压缩感知中重要的一步,是压缩感知的关键之处.因为重构算法关系着信号能否精确重建,国内外的研究学者致力于压缩感知的信号重建,并且取得了很大的进展,提出了很多的重构算法,每种算法都各有自己的优 ...
最新文章
- mysql 去重con_python 爬虫 实现增量去重和定时爬取实例
- 网易云游戏来了:手机电脑电视随时接入可玩,高流畅度低延迟,还能跨终端无缝切换...
- HDU4082(相似三角形的个数)
- python 路径拼接字符串_anaconda环境变量添加 python笔记
- Spring4.3.10 集成 Apache CXF 3.3 详细说明
- 破解密码——利用粘滞键漏洞破解Windows 7 PIN
- 电脑html接口是什么意思,HDMI、DVI 我们的电脑为什么会有这么多种视频接口?
- prepareStatement的批量处理数据
- Windows 10 下如何显示文件的后缀名
- maven clean 之后报错
- 无线传感网络的自适应协作数据传输方法
- Nokia 为何只做 Windows Phone :我怕 Android 市场被三星独霸
- 当初我要是这么学习二叉树就好了「附图文解析」
- 开放api接口签名验证
- vbox连接Ubuntu18.04
- 微信公众账号怎么获取微信原始ID
- http端口映射(80 port mapping)
- 详解各类型功放电路及原理
- TI AM335x通过rmii,修改phy,实现双网络接口,实现双路百兆网,LAN8720
- u盘被占用,无法弹出解决办法
热门文章
- MySql免安装配置教程
- Python 帮你批量生成手机号码
- MAMP软件的安装和使用
- 什么是(抽象方法,普通方法,抽象类、接口),区别又是什么?
- _bstr_t与BSTR
- 全媒体时代下高校思想政治教育目标应坚持的原则
- python-猜数字游戏(0-9)
- 编码:中文字符转ASCII码
- JPA错误 -- No identifier specified for entity: com.fyh.meng.configsystem.domain.GemConfig
- html5图钉效果,图钉风格在美国现代设计发展中的作用与影响