
算法
文章平均质量分 67
Siveens
不积跬步无以至千里,不积小流无以成江海!
展开
-
十大排序算法(C++)
十大排序算法(C++)1、冒泡排序原理:比较相邻两个元素,如果前一个比后一个大则交换二者位置(以升序为例),每进行一轮比较则可以把最大的元素放到相对最后的位置。每进行一轮比较就会有一个元素变为有序。循环对每轮越来越少的元素进行比较则最终变为有序序列。如果序列元素初始时为有序,则一轮则可进行排序完毕,最好时间复杂度为O(n);如果序列元素初始时是逆序,则需要n-1轮比较,且每轮要进行n-i次比较,最坏时间复杂度为O(n²),平均时间复杂度为O(n²)。// 冒泡排序void SortBubblin原创 2021-02-21 19:46:45 · 643 阅读 · 0 评论 -
SM3国密加密算法(C语言)
SM3是国产哈希算法,在商用密码体系中,主要用于数字签名及验证、消息认证码生成及验证、随机数生成等。对于用户需要加密的数据在加密后会生成一个固定长度(32字节)的哈希值。SM3算法是公开的。实现原理如下图所示:C代码展示:完整代码见github:https://github.com/CMwshuai/Algorithm.git1、初始值IVstatic const unsigned int IV[8] ={ 0x7380166F, 0x4914B2B9, 0x172442D7原创 2021-01-23 20:37:01 · 20204 阅读 · 3 评论 -
凸包算法Jarvis's march步进法和Graham扫描法的原理及实现
凸包概念在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡皮圈。 用自己的话说就是在一个点集中,能够包含所有点的凸多边形(所有的点都能落入多边形的内部)。专业的描述可以通过百度百科了解。在作者Kyle Loudon的《Mastering Algorithms with C》一书的中文版中描述到一个点集的凸包是指包含该点集中的所有点的最小凸多边形。如果一个多边形内任意两...原创 2019-11-10 20:57:51 · 1767 阅读 · 0 评论