算法设计与分析
文章平均质量分 70
小玲CS
这个作者很懒,什么都没留下…
展开
-
最长公共子序列问题
最长公共子序列(LCS)算法题目描述:子序列定义:X=(x1,x2,····,xm),序列Z=(z1,z2,····,zk)是X的一子序列,必须满足:若X的索引中存在一个严格增的序列i1,i2,····,ik,使得对所有的j=1~k,均有xij=zj。两个序列的公共子序列:Z是X和Y的子序列,则Z是两者的公共子序列CS。最长公共子序列(LCS):在X和Y的CS中,长度最大者为一个最长公共子序列LCS。算法思想因为LCS问题满足最优子结构和重叠子区间,所以可用动态规划的方法来设计算法。LCS的最转载 2021-05-13 11:00:19 · 1753 阅读 · 0 评论 -
K均值聚类算法
原创 2021-05-09 21:09:17 · 68 阅读 · 0 评论 -
多重背包——动态规划
背包问题背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。也可以将背包问题描述为决定性问题,即在总重量不超过W的前提下,总价值是否能达到V?它是在1978年由Merkle和Hellman提出的。背包问题大概分为了三类:0-1背包、完全背包、多重背包0-1背包0/1背包问题是最基本的背包问题,它包含了背包问原创 2021-03-24 14:50:57 · 425 阅读 · 0 评论 -
常用的数据结构以及算法
常用的数据结构PASCAL之父,瑞士著名计算机科学家沃思(Niklaus Wirth)教授曾提出:算法+数据结构=程序。可以看出数据结构和算法是程序的两个重要组成部分,数据结构是指数据的逻辑结构和存储方法,而算法是指对数据的操作方法。1.线性表线性表按存储方式可分为顺序表和链表。线性表的基本运算是指对线性表的操作,常见的包括:求长度、置空表、遍历、查找、修改、删除、插入、排序等。此外还有复杂的运算,比如线性表的合并、反转、求中值、删除重复元素等。顺序表对应数组,STL中vector也是这样实现的。顺原创 2021-03-17 22:08:37 · 1868 阅读 · 0 评论 -
排序算法的比较
排序算法排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。算法的时间复杂度和空间复杂度算法稳定性稳定的算法有:冒泡排序、插入排序、归并排序和基数排序。不是稳定的排序算法有选择排序、快速排序、希尔排序、堆排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并原创 2021-03-16 09:37:13 · 214 阅读 · 0 评论