文章目录

  • 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];

九月四号《算法笔记》学习相关推荐

  1. 算法笔记学习PAT甲级解题记录

    算法笔记学习记录 2019.06.26 float&&double 推荐全部使用double,注意区分scanf("%lf",&double1);与prin ...

  2. 算法笔记学习(3)---深度优先搜索(DFS)

    深度优先搜索(DFS) 设想我们现在身处一个巨大的迷宫之中,以当前所在位置为起点,沿着一条路向前走,当碰到岔路口的时候,就选择其中一个岔道口前进.如果选择的这个岔路前方是一条死路,就退回到这个岔道口, ...

  3. 强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现

    强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现 TD3算法简介 TD3是Twin Delayed Deep Deterministic policy gradie ...

  4. 《算法笔记》第四章笔记

    <算法笔记>第四章 排序 排序算法的思想都比较简单,而且c++可以直接用sort函数进行排序,一般不会直接写排序代码 归根到底就是每轮处理一个数据,n个数据只需处理n-1次即可变得有序 选 ...

  5. 《算法笔记》学习 入门篇

    目录 <算法笔记>学习 3.1 简单模拟 例1:[PAT B1001]害死人不偿命的(3n+1)猜想 例2:[PAT B1032]挖掘机技术哪家强 3.2 查找元素 例:[codeup 1 ...

  6. 计算机视觉算法——Transformer学习笔记

    算机视觉算法--Transformer学习笔记 计算机视觉算法--Transformer学习笔记 1. Vision Transformer 1.1 网络结构 1.2 关键知识点 1.2.1 Self ...

  7. 视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机

    第四讲---第五讲学习笔记如下: 视觉SLAM十四讲学习笔记-第四讲-李群与李代数基础和定义.指数和对数映射_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模 ...

  8. 算法笔记(胡凡)学习笔记@Kaysen

    本文旨在记录算法笔记学习过程中的收获和一些知识点,部分易错知识点只针对个人而言,CCF-CSP考试冲鸭!!! Chapter 2 C/C++快速入门(易错知识点) 2.1 基本数据类型 变量定义注意区 ...

  9. 《算法笔记》学习笔记(1)

    <算法笔记>学习笔记(1) 2021/4/7号 晚上21:36开始学习 第二章 c++/c快速入门 有的时候不要在一个程序中同时使用cout 和 printf 有的时候会出现问题. 头文件 ...

最新文章

  1. 邮件附件在线预览——HTML Filter
  2. 最详细的CentOS 6与7对比(一):常见设置对比
  3. fir.im Weekly - 2017 年必须了解的 iOS 开源库
  4. 爬虫学习二: bs4 xpath re
  5. ImportError: Missing optional dependency ‘xlrd‘. Install xlrd >= 1.0.0 for Excel support Use pip or
  6. c++20 协程 图片识别框架 紫丁香
  7. python for循环 内存_Python for循环中的内存错误
  8. (转 )Unity对Lua的编辑器拓展
  9. 多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念(转)
  10. 白话大数据——大数据算法:白话遗传算法
  11. Beaglebone Black——开机自动运行程序
  12. 15分钟的html倒计时,js实现5分钟倒计时
  13. SDUT - 表达式语法分析——递归子程序法
  14. 小白:关于处理“can't find '__main__' module in ”这个问题的详细处理方式!
  15. python求奇偶数和_python奇偶数求和
  16. Java 如何将线程挂起呢?
  17. Mac快捷键及手势基本操作
  18. IOS版aplayer使用教程_Google地球 安卓手机版(教程)流畅使用
  19. 雷达抗有源干扰主要方法分类
  20. 学计算机的会重装系统吗,人人都能学会重装系统,你还在抱着电脑去实体店重装系统吗?...

热门文章

  1. 二进制(二):十进制转二进制的两种方法
  2. 学会重构与对比 ——码农鼻祖天才香农
  3. 51信用卡不止于想象力?
  4. vue优化之CND优化
  5. 外贸:掌握这5个社交软件,让你不在为营销推广感到烦恼
  6. 第11章:图像金字塔
  7. git 公钥提交代码_Git提交代码push的时候报错常见错误
  8. 2017百度之星资格赛1003 度度熊与邪恶大魔王(完全背包)
  9. 百兆以太网传输距离_网线有哪几种有效传输距离是多少米
  10. 下载原版百度文库资料