随笔分类 -  数据结构

算法笔记(c++)--回文
摘要:算法笔记(c++)--回文 阅读全文

posted @ 2018-08-30 09:10 邓佳程 阅读(309) 评论(0) 推荐(0)

算法笔记(c++)--完全背包问题
摘要:算法笔记(c++)--完全背包和多重背包问题 完全背包 完全背包不同于01背包-完全背包里面的东西数量无限 假设现在有5种物品重量为5,4,3,2,1 价值为1,2,3,4,5 背包容量为10 其他都和01背包一样,就是遍历j时候的初始化不一样。 这里的dp[j]还是表示前i件物品放入一个为j容量的 阅读全文

posted @ 2018-08-04 13:39 邓佳程 阅读(9784) 评论(0) 推荐(0)

算法笔记(c++)--关于01背包的滚动数组
摘要:算法笔记(c++)--关于01背包的滚动数组 关于01背包问题:基本方法我这篇写过了。 https://www.cnblogs.com/DJC-BLOG/p/9416799.html 但是这里数组是N^2,据说滚动数组可以用1维来代替二维。 我想了想也没想通。干脆老方法,一步步列出来就懂了。 先上下 阅读全文

posted @ 2018-08-04 10:35 邓佳程 阅读(471) 评论(0) 推荐(0)

算法笔记(c++)--01背包问题
摘要:算法笔记(c++)--经典01背包问题 算法解释起来太抽象了。也不是很好理解,最好的办法就是一步步写出来。 背包问题的核心在于m[i][j]=max(m[i-1][j],m[i-1][j-w[i]]+v[i])这个公式理解起来还是有点麻烦的特别我这种脑子笨的人。所以我先上段代码,然后那数据一步步分析 阅读全文

posted @ 2018-08-03 23:07 邓佳程 阅读(1235) 评论(0) 推荐(0)

算法笔记(c++)--c++中碰到的一些用法
摘要:算法笔记(c++)--c++中碰到的一些用法 toupper(xxx)可以变成大写; tolower(xx)小写 isalpha(xxx)判断是不是字母 isalnum(xx)判断是不是数字 abs(xxx)绝对值 为了防止空格问题想要读取一行字符串可以用 getline()函数 string.su 阅读全文

posted @ 2018-08-02 00:44 邓佳程 阅读(263) 评论(0) 推荐(0)

算法笔记(c++)--桶排序题目
摘要:算法笔记(c++)--桶排序 记得题目是排序,输入n个1-1000的数字然后去重然后排序。 桶排序没毛病 这样输入的同时就排序好了,到时候 if(a[i]==1) cout<<a[i] 就可以打印出排序好的内容了 阅读全文

posted @ 2018-08-01 20:51 邓佳程 阅读(265) 评论(0) 推荐(0)

算法笔记(c++)--使用一个辅助栈排列另一个栈
摘要:算法笔记(c++)--使用一个辅助栈排列另一个栈 仅仅使用一个辅助栈,不使用其他数据结构来排列一个栈,要求,上大下小。 分析下。肯定是先吧主栈中的数据都放到辅助栈中,在辅助栈中上小下大。 1.首先循环提取主栈中的top,如果辅助栈为空就直接放进去,如果比辅助栈顶小也直接放进去,如果比辅助栈顶大就把辅 阅读全文

posted @ 2018-07-25 16:17 邓佳程 阅读(223) 评论(0) 推荐(0)

算法笔记(c++)-使用递归函数逆序一个栈
摘要:恢复内容开始 使用递归函数逆序一个栈 题目:使用递归函数,不借助其他数据结构逆序一个栈。 我的思路:使用递归函数保存栈中变量。 递归函数分两个,一个获取并移除栈底元素,另一个负责逆序。其实俩个递归思路基本一致。 获取并移除栈底元素的递归结构图如下: 这个结构很清楚了。照着写就是代码了。 代码如下 另 阅读全文

posted @ 2018-07-24 15:00 邓佳程 阅读(378) 评论(0) 推荐(0)

数据结构-排序-桶排序
摘要:数据结构-排序-桶排序 先看下桶排序的基本思想 假定排序的值都在0~m-1之间,设置m个桶,依次把值为i的记录分配到第i个桶中,然后把个个桶的记录依次收集起来。 首先上下结构图 这就是我们用静态链表存储待的排序记录,我们会让first指向下标为0的地方,只要next不为-1就接着遍历。 初始化代码如 阅读全文

posted @ 2018-05-27 16:19 邓佳程 阅读(689) 评论(0) 推荐(0)

数据结构-查找-散列表的线性探测已经拉链法的查找
摘要:哈希表 先说哈希表散列函数的设计有几种 再说下处理冲突的方法 这里我写了4种返回值,对不同情况都有返回。 比较常见的处理冲突的方法还有拉链法,为了快捷我们一般用头插法。 其实就是单链表的查找非常简单 直接上代码了 阅读全文

posted @ 2018-05-23 20:19 邓佳程 阅读(892) 评论(0) 推荐(0)

数据结构-查找-折半查找-二叉排序树查找
摘要:折半查找 对于关键码有序的数列,用二分法查找。 比如123456789,要找2,先折半找5,2比5小,继续向左查找,找3,2比3小,继续向左查找,2匹配成功。 可以想到这是个递归的过程我这里递归非递归都写一遍。 首先是非递归的算法。 传入一个vector<int> &v和一个 待查找数值k 设定查找 阅读全文

posted @ 2018-05-23 16:43 邓佳程 阅读(1965) 评论(0) 推荐(0)

数据结构-查找-线性表查找技术
摘要:顺序表的查找技术 假设有一组书8,5,9,80,16,5,56。。。。如何查找我们的value? 一般为 看第一个for循环中每次都需要判断一次i<size,那我们遍历100个数最坏情况下其实是比较了200次。 于是我们设定一个哨兵在a[0],然后while循环从后往前比较,加入比较到就返回i,否则 阅读全文

posted @ 2018-05-23 13:38 邓佳程 阅读(215) 评论(0) 推荐(0)

数据结构-排序-直接插入排序
摘要:直接插入排序 直接插入排序 直接插入排序类似对扑克牌的整理,初始情况下把前面第一个看作有序序列,然后后面全是无序。 这个排序写过很多遍,但是每次回顾都感觉到设计者精彩巧妙的安排。 直接插入排序是一种稳定排序; 但是当数据量大的时候,效率会打打降低。 按照特性,最好情况下,每次只要比较一次,移动2次。 阅读全文

posted @ 2018-05-21 23:04 邓佳程 阅读(197) 评论(0) 推荐(0)

数据结构-排序-归并排序
摘要:归并排序 什么事归并排序??就是把几个有序序列合并 先讲简单的2个有序的归并排序 思路很简单,不停的比较两个数组的第一个,谁大就把它插入第三方数组,然后下标++,当某一数组遍历完了,直接把另一个数组剩下的值插入即可。 void two_sort(const vector<int>& v1,const 阅读全文

posted @ 2018-05-21 22:54 邓佳程 阅读(190) 评论(0) 推荐(0)

数据结构-排序-快排
摘要:快速排序 首先快速排序步骤: 首先选择轴值 把待排序内容分为两部分,左边为小于或者等于轴值,右边为大于轴值 然后对左右重复上面步骤直到整个序列有序 直接上代码这里先写一次划分的代码 这里的一次划分是那第一个数字为轴值,我们也可以用最后一个或者中间的。 #include<iostream> #incl 阅读全文

posted @ 2018-05-21 21:19 邓佳程 阅读(715) 评论(0) 推荐(0)

数据结构-排序-起泡排序-简单排序
摘要:起泡排序 首先起泡排序同样分有序区和无序区。基本思想:两两比较,反序则交换位置。 由于这个特性我们就知道,一趟排序后,最后一个必然是最大的。然后第二次最后第二大又找到。 然后就很简单了直接上代码。虽然代码很简单,但是里面设计却很巧妙 同样贴上打印的数据,每次交换都有 简单排序 简单排序很气泡排序个人 阅读全文

posted @ 2018-05-21 19:50 邓佳程 阅读(464) 评论(0) 推荐(0)

数据结构-排序-shell排序
摘要:shell排序 首先,希尔排序适用于待排序列关键有序。 接下来一步步图解SHELL排序 我为了方便理解内部操作。我先把代码输出整理下。 我这里把每个步骤都打印了出来,运行就可以得到这种结果 看看就知道每次操作了 阅读全文

posted @ 2018-05-21 19:19 邓佳程 阅读(852) 评论(0) 推荐(0)

数据结构-排序-直接插入排序
摘要:直接插入排序 直接插入排序类似对扑克牌的整理,初始情况下把前面第一个看作有序序列,然后后面全是无序。 这个排序写过很多遍,但是每次回顾都感觉到设计者精彩巧妙的安排。 直接插入排序是一种稳定排序; 但是当数据量大的时候,效率会打打降低。 按照特性,最好情况下,每次只要比较一次,移动2次。分别是v[0] 阅读全文

posted @ 2018-05-21 15:10 邓佳程 阅读(138) 评论(0) 推荐(0)

导航