
算法与数据结构
文章平均质量分 68
算法与数据结构
畅宝不秃头
这个作者很懒,什么都没留下…
展开
-
【贪心法】最小生成树1——Prim算法
prim算法:设 G =< V , E , W >,其中 V =(1,2,..., n )。这个算法的基本思想是将 V 划分成两个子集S与V - S。初始 S ={1}.算法每一步从连通 S 与 V - S 的边中挑选一条权最小的边,然后把这条边所关联的顶点加到 S 中去,这条边也就成了生成树 T 的边,至多经过 n -1步,就得到 G 的一棵最小生成树。原创 2022-11-27 11:27:42 · 2627 阅读 · 1 评论 -
【贪心法】最优前缀码(Huffman哈夫曼算法)
在计算机中需要用0-1字符串作为代码来表示信息,为了正确解码,必须要求任何字符的代码不能作为其他字符代码的前缀,这样的码称为二元前缀码的存储通常采用二叉树结构,令每个字符作为树叶,对应这个字符的前缀码看作根到这片树叶的一条路径,规定每个结点通向左儿子的边记作0,通向右儿子的边记作1。不同学符在信息中出现的频率不同.设 C ={x1,x2,...,xn}是 n 个字符的集合,xi的频率是 f(xi), i =1,2,..., n ,那么存储一个字符所使用的二进制位数的平均值是:其中是表示字符。原创 2022-11-25 19:50:32 · 7078 阅读 · 0 评论 -
最大子段和——用蛮力算法,分治策略,动态规划算法三种求法(C语言)
给定n个整数的序列A=,求该数列最大子段和问题,通过三种算法蛮力算法,分治策略,动态规划算法的分析进行求解。原创 2022-10-30 11:02:02 · 11180 阅读 · 2 评论 -
【锦标赛算法】找第二大元素FindSecond()
采用锦标赛算法找数组中第二大元素FindSecond()原创 2022-10-25 14:25:43 · 2421 阅读 · 0 评论 -
找出最大最小值FindMaxMin()
采用分组比赛的算法:首先将L中的元素两两一组,分成L/2组(当n为奇数值有一个元素轮空),每组中的两个数通过一次比较确定本组的“较大”和“较小”,把至多n/2+1(当n为奇数时,需要把被轮空的元素加进来)个小组“较大”放在一起,运行Findmax()算法找出其中较大的,它就是L中的最大元素。类似的再把至多n/2+1个小组“较小”放到一起,运行Findmin()算法找出最小元素,即为L中最小的元素。其中Findmax()和Findmin()算法函数代码如下(输入:n个数的数组L。输出:max,min。原创 2022-10-25 13:48:01 · 1652 阅读 · 1 评论 -
【选择算法】选择最大值Findmax()
选择算法找出最大值,Findmax(),采用顺序比较算法,从前往后顺序比较n个元素,比较时用max保留到当前为止最大的元素。原创 2022-10-25 10:46:23 · 3453 阅读 · 0 评论 -
快速排序算法Quicksort()
分治算法实现快速排序,运用Quicksort()和Partition()函数的过程为,先从后向前扫描数组A,找到第一个不大于的元素,然后从前扫描A找到第一个不大于的元素,当时,交换与。这时 后面的数都大于 ,前面的数都小于 ,重复上述操作,直到与相遇。当,就代表了在排好序的数组中的正确位置q。此时在q位置之前的元素都不大于,在q位置之后的元素都大于。根据上述过程,原创 2022-10-24 21:01:14 · 947 阅读 · 1 评论 -
【分治算法】最近邻近点对MinDistance()
例题:设平面上有n个点,,...,,n>1,的直角坐标是(,),i=1,2,...,n,求距离最近的两个点及它们之间的距离。最短距离公式:用蛮力算法需要计算每两个点之间的距离,并比较出最短距离,那么就有个点对,需要O()的时间。原创 2022-10-24 17:32:27 · 1937 阅读 · 0 评论 -
【分治算法】计算a^n
采用分治算法,将a^n看作两部分幂的乘积,每一部分都是一个子问题,即。如果选用蛮力算法对a进行n-1次相乘,算法的时间复杂度为O(n)原创 2022-10-24 10:32:28 · 2737 阅读 · 2 评论