九月四号《算法笔记》学习
文章目录
- 1.归并排序(二路)
- <1>递归实现
- <2>非递归实现
- 3.快速排序
- 4.随机数生成
1.归并排序(二路)
<1>递归实现
反复将[left,right]区间分为两半,对两个子区间[left,mid],[mid+1,right]分别递归进行归并排序,然后合并为有序序列。
const int maxn=100;
//合并两个子区间
void merge(int A[],int L1,int R1,int L2,int R2){int i=L1,j=L2;int temp[maxn],index=0;while(i<=R1&&j<=R2){if(A[i]<=A[j]){temp[index++]=A[i++]; }else{temp[undex++]=A[j++]; }}//将剩余元素加入序列中while(i<=R1) temp[index++]=A[i++];while(j<=R2) temp[index++]=A[j++];for(i=0;i<index;i++){A[L1+i]=temp[i];}
}
//将数组当前区间进行归并排序
void mergeSort(int A[],int left,int right){int mid=(left+right)/2;mergeSort(A,left,mid);mergeSort(A,mid+1,right);merge(A,left,mid,mid+1,right);
}
<2>非递归实现
令排序的区间长度初始step为2,将一组数据划分n个长度为step的区间,对每个区间进行排序,排序完一次就让step*2,直到step/2超过n,单侧区间大于整个长度结束。
void mergeSort(int A[]){for(int setp=2;step/2<=n;step*=2){for(int i=1;i<=n;i+=step){int mid=i+step/2-1;if(mid+1<=n){//右端点i+step-1算的时候可能会超过nmerge(A,i,mid,mid+1,min(i+step-1.n));}}}
}
3.快速排序
//对区间划分
int Partition(int A[],int left,int right){int temp=A[left];while(left<right){while(left<right&&A[right]>temp) right--;A[left]=A[right];while(left<right&&A[left]<=temp) left++;A[right]=A[left];}A[left]=temp;return left;
}
void quickSort(int A[],int left,int right){if(left<right){int pos=Partition(A,left,right);quickSort(A,left,pos-1);quickSort(A,pos+1,right);}
}
4.随机数生成
srand((unsigned)time(NULL));
s=rand();
随机数生成有范围大小、
(int)(round(1.0*rand()/RAND_MAX *(b-a)+a)) 随机生成[a,b];
九月四号《算法笔记》学习相关推荐
- 算法笔记学习PAT甲级解题记录
算法笔记学习记录 2019.06.26 float&&double 推荐全部使用double,注意区分scanf("%lf",&double1);与prin ...
- 算法笔记学习(3)---深度优先搜索(DFS)
深度优先搜索(DFS) 设想我们现在身处一个巨大的迷宫之中,以当前所在位置为起点,沿着一条路向前走,当碰到岔路口的时候,就选择其中一个岔道口前进.如果选择的这个岔路前方是一条死路,就退回到这个岔道口, ...
- 强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现
强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现 TD3算法简介 TD3是Twin Delayed Deep Deterministic policy gradie ...
- 《算法笔记》第四章笔记
<算法笔记>第四章 排序 排序算法的思想都比较简单,而且c++可以直接用sort函数进行排序,一般不会直接写排序代码 归根到底就是每轮处理一个数据,n个数据只需处理n-1次即可变得有序 选 ...
- 《算法笔记》学习 入门篇
目录 <算法笔记>学习 3.1 简单模拟 例1:[PAT B1001]害死人不偿命的(3n+1)猜想 例2:[PAT B1032]挖掘机技术哪家强 3.2 查找元素 例:[codeup 1 ...
- 计算机视觉算法——Transformer学习笔记
算机视觉算法--Transformer学习笔记 计算机视觉算法--Transformer学习笔记 1. Vision Transformer 1.1 网络结构 1.2 关键知识点 1.2.1 Self ...
- 视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机
第四讲---第五讲学习笔记如下: 视觉SLAM十四讲学习笔记-第四讲-李群与李代数基础和定义.指数和对数映射_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模 ...
- 算法笔记(胡凡)学习笔记@Kaysen
本文旨在记录算法笔记学习过程中的收获和一些知识点,部分易错知识点只针对个人而言,CCF-CSP考试冲鸭!!! Chapter 2 C/C++快速入门(易错知识点) 2.1 基本数据类型 变量定义注意区 ...
- 《算法笔记》学习笔记(1)
<算法笔记>学习笔记(1) 2021/4/7号 晚上21:36开始学习 第二章 c++/c快速入门 有的时候不要在一个程序中同时使用cout 和 printf 有的时候会出现问题. 头文件 ...
最新文章
- 邮件附件在线预览——HTML Filter
- 最详细的CentOS 6与7对比(一):常见设置对比
- fir.im Weekly - 2017 年必须了解的 iOS 开源库
- 爬虫学习二: bs4 xpath re
- ImportError: Missing optional dependency ‘xlrd‘. Install xlrd >= 1.0.0 for Excel support Use pip or
- c++20 协程 图片识别框架 紫丁香
- python for循环 内存_Python for循环中的内存错误
- (转 )Unity对Lua的编辑器拓展
- 多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念(转)
- 白话大数据——大数据算法:白话遗传算法
- Beaglebone Black——开机自动运行程序
- 15分钟的html倒计时,js实现5分钟倒计时
- SDUT - 表达式语法分析——递归子程序法
- 小白:关于处理“can't find '__main__' module in ”这个问题的详细处理方式!
- python求奇偶数和_python奇偶数求和
- Java 如何将线程挂起呢?
- Mac快捷键及手势基本操作
- IOS版aplayer使用教程_Google地球 安卓手机版(教程)流畅使用
- 雷达抗有源干扰主要方法分类
- 学计算机的会重装系统吗,人人都能学会重装系统,你还在抱着电脑去实体店重装系统吗?...