算法分析
Coolstuz
什么也不会,但又都会点
展开
-
算法分析:C语言实现分治算法之二分搜索(折半查找)(递归)与线性查找的比较
二分搜索的伪码:二分搜索的解题思路: a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8] 1 2 3 4 5 6 7 8 K=3 //输入8位数的数组 第一次查找: low=1 high=8 mid=(1+8)/2=4 (int整型舍去小数部分) K=3...原创 2021-10-28 22:40:45 · 1523 阅读 · 0 评论 -
算法分析:C语言实现动态规划之最长公共子序列
最长公共子序列问题:下面的简单问题说明了动态规划的基本原理。在字母表一∑上,分别给出两个长度为n和m的字符串A和B,确定在A和B中最长公共子序列的长度。这里,A = a₁a₂...an。的子序列是一个形式为a₁ka₂k...aik的字符串,其中每个i都在1和n之间,并且1<i₁< i₂<…<ik≤n。例如,如果∑= {x, y,z},A = zxyxyz和B= xyyzx,那么xzy 同时是A和B的长度为3的子序列。然而,它不是A和B最长的公共子序列,因为字符串x...原创 2021-10-26 23:47:34 · 10462 阅读 · 3 评论 -
算法分析:C语言实现动态规划之0-1背包问题
背包问题求解原理:为了装满背包,我们导出一个递归公式如下,设V[i,j]用来表示从前i项中取出来的装人体积为j的背包的物品的最大价值。这里,i的范围是从О到n,j的范围是从0到C。这样,要寻求的是值 V[n,C]。很清楚,V[o,j]对于所有j的值是0,这是由于背包中什么也没有。另-方面,V[i,0]对于所有i的值为0,因为没有东西可放到为0的背包里。一般情况下,当i和j都大于0时,有下面的结论,它是很容易证明的。观察结论1.V[i-1,j]:仅用最优的方法取自的物品去装入体积为j的背包所得到的原创 2021-10-26 22:42:53 · 7900 阅读 · 2 评论 -
算法分析:运用合并算法C语言实现“自底向上合并排序”
合并两个已排序的表 :实现两个已排序的表进行排序合并。void Merge(int A[],int p,int q,int r){ int B[r+1]; int s = p, t = q + 1, k = p; while((s<=q)&&(t<=r)){ if(A[s]<=A[t]){ //设置条件判断,如果左表的值小于右表的值,将该值放进新的表中 B[k] = A..原创 2021-10-10 00:12:59 · 858 阅读 · 0 评论 -
算法分析:基于划分算法的快速排序C语言实现
快速排序,在最坏的情况下,算法QUICKSORT 的运行时间是0(n²),然而如果总是选择中项作为主元,它的时间复杂性是O(nlog n)。多余的也不多说了,书上都有!直接上代码!#include <stdio.h>#include <stdlib.h>/*将5设为比较元素,每次比较都需要这个元素,再用j做寻找元素,j每找到一个比5小的数,则i++,并且交换比较过的元素。最后跳出循环,将比较元素与最后i的位置进行交换1. 5 7...原创 2021-10-08 23:17:57 · 420 阅读 · 0 评论