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