![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
张哲and哲哥
做一个徘徊在牛A和牛C之间的人
展开
-
三色排序
一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数排序。给定一个只含有0,1,2的整数数组A及它的大小,请返回排序后的数组。保证数组大小小于等于500。 例如:[0,1,1,0,2,2] 6——>[0,0,1,1,2,2] 我的思路:首先只有三种值。小大中,首先最小到最左边,最大的到最右边。排完了最小和最大中等的值就自动拍好了。 这里有三个指针 j是最左边的指针原创 2017-06-12 23:38:21 · 779 阅读 · 0 评论 -
优先队列
参考链接https://blog.csdn.net/cquzhengdayday/article/details/72514900https://blog.csdn.net/zyshappy/article/details/80374779?utm_source=blogxgwz9优先队列的底层数据结构时二叉堆,其插入数据的时间复杂度时O(nlogn),比起插入排序的O(n^2)更优秀。...原创 2018-12-06 10:51:34 · 111 阅读 · 0 评论 -
完全背包问题
参考了以下几篇博客:https://www.cnblogs.com/Kalix/p/7622102.htmlhttps://blog.csdn.net/qwq________/article/details/53075472完全背包问题:在n种物品中选取若干件(同一种物品可多次选取)放在空间为W的背包里,每种物品的体积为w1,w2,…,wn,与之相对应的价值为v1,v2,…,vn.求解怎么...原创 2018-11-13 10:27:06 · 164 阅读 · 0 评论 -
位运算
关于位运算 &(与)–有0则0;无0则1; |(或)–有1则1,无1则0; ^(亦或)–相同为0,不同为1;右移>>(最右边的位被抛弃)列表内容正数,最左边添0;00001010>>3=00000001 负数,最左边添1;10001010>>3=11110001左移<<(最左边的位被抛弃)–最右边统一添0;(正数)00...原创 2018-09-13 19:49:07 · 198 阅读 · 0 评论 -
并查集
并查集:并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。也就是说在合并的时候不需要考虑两个集合之间的元素是否会重合。并查集顾名思义:并与查 并者:合并两个集合 查者:查找元素在哪个集合中每个集合有一个根(root),ro...原创 2018-09-08 17:43:18 · 213 阅读 · 0 评论 -
快速排序
为什么说快速排序不稳定 快速排序是从头和尾开始对元素进行比较,有可能把关键值相同的两个元素调换了位置,所有说是不稳定的,比如对 2 4 1 3 1进行排序,第一趟就把后面的1换到前面去,形成了不稳定排序 选择2为基准元素,让最后一个数和2比较,就变成了1 4 1 3 1所有把1往前挪在原来第三个位置的1之前,所以说不稳定...原创 2018-03-13 20:01:51 · 191 阅读 · 0 评论 -
卡特兰数
弥补非计算机科班出生的不足 卡特兰数的计算公式:C(2n:n)/n+1 其中的推导 参考公式推导 我对其推导也有一些见解。问题一 进出栈栈是一种先进后出(FILO,First In Last Out)的数据结构.1,2,3,4,1,2,3,4顺序进栈,那么一种可能的进出栈顺序是 1In→2In→2Out→3In→4In→4Out→3Out→1Out, 1In→2In→2Out→3In转载 2017-08-13 18:00:21 · 356 阅读 · 0 评论 -
约瑟夫环
这个问题我们采取的做法是建立一个单向循环链表,然后做两个指针head和last。head总是在last的前面。当计数到m时就删除head指向的那个接点。class Node{ public int node; public Node next; public Node(int node) { this.node = node; }}public c原创 2017-08-10 10:27:30 · 258 阅读 · 0 评论 -
时间复杂度和空间复杂度
将算法中基本操作的执行次数作为算法的时间复杂度 T(n)=O(f(n)中增长最快的项/ 此项的系数) , 比如f(n)=2n3+4n2+100 , 则其时间复杂度为为T(n)=O(2n3/2)=O(n3)。常用的比较关系如下: 通过以上分析我们总结出计算一个算法时间复杂度的步骤如下: (1) 确定算法中的基本操作,以及问题的规模。 (2)根据基本操作执行情况计算出规模n 的函数f(n),原创 2017-08-17 10:38:20 · 603 阅读 · 0 评论 -
01背包问题
题目链接:https://www.acwing.com/problem/content/2/01背包问题:有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行...原创 2018-12-22 15:03:32 · 148 阅读 · 0 评论