算法
代码界的小姑娘
这个作者很懒,什么都没留下…
展开
-
棋牌游戏“拖拉机”牌型提取
拖拉机牌型说明:手牌中同花色的牌组成如aabbcc或aabb类型的,被称为拖拉机 - 计算过程 输入一个数组,计算出来长度为4的拖拉机,和长度为6的拖拉机 实现 #include <stdio.h> #include <algorithm> #include <iostream> #include <cstring> #in...原创 2018-04-29 15:38:22 · 1962 阅读 · 0 评论 -
排序算法之桶排序
原理 将待排序数,按照个位,一次进桶,再按桶的顺序依此出桶,再按十尾依此进桶出桶,再按百位进同出桶。。。 步骤 (1)设置一个定量的数组当作空桶子; (2)寻访序列,并且按照要求把记录一个一个放到对应的桶子去; (3)对每个不是空的桶子进行排序。 (4)从不是空的桶子里把项目再放回原来的序列中。 性能 稳定性:稳定 时间复杂度:O(d*n)(d表示趟数 ) 空间复杂度:O(...原创 2018-06-10 16:48:47 · 242 阅读 · 0 评论 -
排序算法之归并排序
原理 归并排序是分治法(Divide and Conquer)的一个典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并 稳定性:稳定 时间复杂度:O(nlogn) 空间复杂度:O(n) 步骤 1:把长度为n的输入序列分成两个长度为n/2的子序列; 2:对这两个子序列分别采用归并排序; 3:将两个...原创 2018-06-10 16:12:34 · 172 阅读 · 0 评论 -
排序算法之堆排序
原理 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构。 堆说明 性质:完全二叉树或者是近似完全二叉树 分类:大根堆(父节点总是大于子节点)、小根堆(父节点总是小于子节点) 左右节点:无大小顺序 步骤 1:对于给定的数据序列建堆 2:输出堆顶(首尾元素互相交换) 3:调整剩余元素,重建堆 4:重复2-3直到所有元素有序 性能 ...原创 2018-06-10 15:49:37 · 135 阅读 · 0 评论 -
排序算法之选择排序
原理 从所有记录中选出最小的一个数据元素与第一个位置的记录交换;然后在剩下的记录当中再找最小的与第二个位置的记录交换,循环到只剩下最后一个数据元素为止 稳定性:不稳定 时间复杂度:O(n^2) 空间复杂度:O(1) 步骤 1:初始状态:无序区为R[1..n],有序区为空; 2:第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟...原创 2018-06-10 15:28:24 · 171 阅读 · 0 评论 -
排序算法之快速排序
原理 每一趟排序之后使某记录定位在其应处的位置,其余无序列以它为枢轴,分成两部分,比他小的放在它前面,比他大的放在它后面,下一趟分别对前后的子序列排序,显然可以加快速度 稳定性:不稳定 时间复杂度:O(n*logn) 空间复杂度:O(logn) 步骤 1:从数列中挑出一个元素,称为 “基准”(pivot) 2:重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准...原创 2018-06-10 15:11:02 · 146 阅读 · 0 评论 -
排序算法之冒泡排序
原理 从数组中第一个数开始,依次遍历数组中的每一个数,通过相邻比较交换,每一轮循环下来找出剩余未排序数的中的最大数并”冒泡”至数列的顶端 稳定性:稳定 时间复杂度:O(n^2) 空间复杂度:O(1) 步骤 1:比较相邻的元素。如果第一个比第二个大,就交换它们两个 2:对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数 3:针对所有的元素重复以...原创 2018-06-10 14:55:06 · 122 阅读 · 0 评论 -
排序算法之希尔排序
原理 希尔排序是对相邻指定距离(称为增量)的元素进行比较,并不断把增量缩小至1,完成排序,是直接插入算法的改进版本。 稳定性:不稳定 时间复杂度:算法的时间复杂度分析比较复杂,实际所需的时间取决于各次排序时增量的个数和增量的取值。研究证明,若增量的取值比较合理,算法的时间复杂度约为O(n^1.3 - n^1.5) 空间复杂度:O(n) 算法描述 先将整个待排序的数据分割成为若干子序列...原创 2018-06-09 21:24:42 · 254 阅读 · 0 评论 -
排序算法之直接插入排序
工作原理 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入 稳定性:稳定 时间复杂度:O(n) 空间复杂度:O(1) 最好的情况:原始数据已经有序 最坏情况:原始数据逆序 算法描述 1:从第一个数开始,假设认定该元素已有序 2:取出下一个待插入数据,从已有序的数据从后往前扫描 3:如果已排序元素大于待排序的元素,则将已有序的元素向后移,直到找到比待...原创 2018-06-09 15:19:13 · 204 阅读 · 0 评论 -
Raft协议
分布式一致性算法Raft协议学习原创 2018-12-14 00:05:58 · 1069 阅读 · 0 评论