算法
喵喵锤锤你小可爱
这个作者很懒,什么都没留下…
展开
-
不相交集合ADT -数据结构(C语言实现)
《读数据结构与算法分析》 不相交集合等价关系满足三个性质自反性对称性传递性基本数据结构基本思路使用一个数组,下标表示该集合,内容表示指向的父亲实现 类型声明 typedef int DisjSet[NumSets + 1] ;typedef int SetType ;typedef int ElementsType ;void Intialize(...原创 2020-01-28 22:54:32 · 373 阅读 · 0 评论 -
Horner法则(霍纳法则)及其C语言描述
文章目录简介霍纳法则(Horner Rule)举个栗子C语言实现简介计算机科学中,有一些关于多项式求值的问题。对于多项式求值问题,我们最容易想到的算法是求出每一项的值然后把所求的值累加起来,这种算法的时间和空间效率都不高,对于数据规模不大的题目来说由于其直观、简单很容易被大家采纳,可一旦数据规模过大时,这种算法就显得无能为力了,下面介绍一种解决这类求值问题的高效算法――霍纳法则。在中国,霍纳法...原创 2020-01-21 11:39:45 · 2718 阅读 · 0 评论 -
用C语言实现简单的基数排序
八大排序算法有:冒泡排序、插入排序、选择排序、快速排序、希尔排序、堆排序、归并排序、基数排序。前面七种网上都有很多例子,但是最后一种基数排序却很少看到,所以我总结了一下,并且自己写了一个简单的实现。基数排序是一种分配排序,其基本思想是:排序过程无须比较关键字,而是通过“分配”和“收集”过程来实现排序。它们的时间复杂度可达到线性O(n)。基数排序所做的事情,是对N位分别进行排序。从直觉上来看,人...转载 2020-01-17 16:25:55 · 2965 阅读 · 2 评论 -
算法:排序算法之桶排序、计数排序与基数排序C、Java、Python表述
1. 桶排序 桶排序(Bucket sort),是一种较为高效的排序算法。桶排序的思想近乎彻底的分治思想。桶排序的时间复杂度在最坏情况下为Tworst(N) = O(N)。分析:桶排序假设待排序集合(可以是一组实数)独立的分布在一个范围中,然后根据某种映射将待排序集合中处于同一个值域的元素存入同一个桶中,也就是根据元素值特性将集合拆分为多个区域,则拆分后形成的多个桶,从值域上看是处于有序...原创 2020-01-17 15:25:02 · 302 阅读 · 0 评论 -
C#算法设计排序篇之10-桶排序(附带动画演示程序)
桶排序(Bucket Sort)桶排序的工作原理是将数组根据一定的策略均匀的分到有限数量的桶子里,再对每个桶里的内容进行排序。桶排序是鸽巢排序的一种归纳结果,当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间 O(n) 。桶排序并不是比较排序,它不受到 O(n*log n) 的下限的影响。public class Program { public static void ...转载 2020-01-17 00:15:30 · 544 阅读 · 0 评论 -
模运算与奇偶数判断
模运算如果N整除 A - B,那么我们就说A与B模N同余(congruent),记为A≡B(modN)A \equiv B\pmod{N}A≡B(modN)直观地看,这意味着无论A还是B被N去除,所得余数都是相同的。于是,81≡61≡1(modN)81 \equiv 61 \equiv 1\pmod{N}81≡61≡1(modN)。如同等号的情形一样,若A≡B(modN)A \equiv B\p...原创 2020-01-14 15:33:33 · 876 阅读 · 0 评论 -
二分查找与时间复杂度计算分析
二分查找:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 原理:假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成左、右(左边小一些)两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找左子表,...原创 2020-01-14 14:48:43 · 8196 阅读 · 0 评论