1.头文件algorithm中有函数sort()用于排序,参数为:排序起始地址,排序结束地址,排序规则(返回bool型)例如,要将array[] = {5,7,1,2,9}升序排列,则使用: bool cmp(int a,int b); int main() {     int array[] = {5,7,1,2,9};     sort(array,array+5,cmp);     for(int i = 0;i < 5;i++)         cout << array[i] …
交换类排序:根据序列中两个元素关键字的比较结果来交换他俩在序列中的位置. 冒泡排序:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1]>A[i])则交换他们,直到序列比较完.我们称它为一趟冒泡,结果将最小的元素交换到待排序序列的第一个位置.下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序列减少一个元素,每趟冒泡的结果把序列中最小元素放到了序列的最终位置,……,这样最多n-1趟冒泡就能把所有元素排好序. void BubbleSort(ElemType…
排序就是讲原本无序的序列重新排序成有序的序列.序列里可以是一个单独数据,也可以是多个数据组合的记录,按照记录里的主关键字或者次关键字进行排序. 排序的稳定性:如果排序表中有两个元素R1,R2,其对应的关键字值相等,且排序前R1在R2的前面,如果使用某一排序的算法排序后,R1仍然在R2前面,则称这个排序算法是稳定的,否则称排序算法不稳定. 直接插入排序:首先以一个元素为有序的序列,然后将后面的元素依次插入到有序序列中合适的位置直到所有元素都插入有序序列,其实现为: void InsertSort(…
选择排序:每一趟(例如第i趟)在后面n-i+1(i=1,2,3,……,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到n-1趟做完,待排序元素只剩下1个,就不用再选了. 简单选择排序:其实现为 void SelectSort(ElemType A[],int n){ ;i<n-;i++){ min=i; //min存的是当前最小元素所在下标,初值设为第i个 ;j<n;j++) //从第i个元素往后找,一直找到最后一个元素 if(A[j]<A[min]) min…
原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组内进行直接插入排序:然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<:…<d2<d1),即所有记录放在同一组中进行直接插入排序为止. 该方法实质上是一种分组插入方法. 算法编码 void shellSort(int v[], int n)…
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; } pre.src { background-color:#f8f4d7 } p {font-size: 15px} li {font-size: 15px} Table of Contents partial_sort nth_element stability partition 总结 1 parti…
最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中所做的笔记,笔记后面提供了4种编程语言的仿真代码(C, C++, Python, Matlab),使实现方式更加灵活,同时增强对PID的理解.(文章较长,可点击右侧目录选择性阅读) PID算法学习笔记 参考:PID基础入门教程 一.位式控制算法 1.1 位式控制算法原理 位式控制算法,通过比较SV(…
Johnson 全源最短路径算法学习笔记 如果你希望得到带互动的极简文字体验,请点这里 我们来学习johnson Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些边权重为负数,但可能不存在负权重循环.它的工作原理是使用Bellman-Ford 算法来计算输入图的转换,该转换去除了所有负权重,从而允许在转换后的图上使用Dijkstra 算法.Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些边权重为负数,但可能不存在负权重循…
Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的最长回文子串 时间复杂度:O(N) 算法步骤: 1.添加特殊字符 由于回文串的长度可奇可偶,比如"bob"是奇数形式的回文,"noon"就是偶数形式的回文,马拉车算法的第一步是预处理,做法是在每一个字符的左右都加上一个特殊字符,比如加上'#',那么 bob -->…
<Algorithms算法>笔记:元素排序(4)——凸包问题 Algorithms算法笔记元素排序4凸包问题 凸包问题 凸包问题的应用 凸包的几何性质 Graham 扫描算法 代码 凸包问题 凸包问题就是说,找到一个最小的凸多边形能圈住所有的点. 凸包问题的应用 运动规划:找到从s到t的最短路径,最短路径肯定在凸包上 最远的一对:相隔最远的点对肯定在凸包上 凸包的几何性质 可以通过逆时针遍历所有凸包顶点 凸包的顶点是关于p的极角的递增序列,而p有最小的y坐标. Graham 扫描算法 选择y坐…