算法
Wsyoneself
随遇随记,共同学习,欢迎评论和讨论!
wsywsywsywsywsy979
展开
-
Fowler-Noll-Vo hash算法(FNV)---学习笔记
Fowler-Noll-Vo hash算法(FNV)---学习笔记原创 2022-08-29 20:13:47 · 437 阅读 · 0 评论 -
无向图求传递闭包
1.题目解释:传递闭包(一个二维数组,只包含0和1),当从i到j的路径中包含边数大于1的,则tc[i][j]=1,否则置02.思路:1.判断一个无向图是否连通:从任意一个节点开始dfs或者bfs,如果所用顶点都被标记为已到达顶点,则为连通。2.构件标记问题:当两个顶点属于同一构件时,具有相同的标记。 从每一个尚未做标记的顶点开始进行搜索,并用新的标号标记新到达的顶点3.用构件策略标记好之后,如果i和j的标记相同并且没有i和j之间的边,则tc[i][j]=1; 如果存在i和j直接相连的边原创 2022-03-04 16:34:43 · 856 阅读 · 0 评论 -
c++实现八皇后问题
八皇后问题解释:可参考八皇后问题_百度百科 (baidu.com)总体思路:动态规划,递归,一行一行下棋核心递归函数:下棋后或撤销时对该位置所在列的操作函数:下棋后或撤销时对该位置的斜线方向的操作函数:实现结果:(仅截图了部分)......原创 2022-06-06 08:55:24 · 2217 阅读 · 0 评论 -
希尔排序具体实现
一、实现思路:根据选取的间隔分组看做一段待排序列,然后使用插入排序插入排序:前半部分是有序序列,后半部分是无序序列,将后半部分逐渐插入到前半部分中间隔的选取:从序列长度的一半开始递减,每次递减2二、排序函数实现:(含注释讲解)int* arr;void shell_sort(int n) { int gap = n / 2; for (int i = gap; i >= 1;i -= 2) { //每个分组交替进行排序:即交替将右边无序序列中的第一个元素插入到左边 f原创 2022-03-26 08:27:05 · 486 阅读 · 0 评论 -
常用排序算法总结与英文翻译
(1)选择排序:中文: 使用递归实现,递归结束条件:排序片段长度为1; 递归函数:找到所给排序片段中最大的元素以及元素索引,将该元素置换到序列末尾,将排序长度减一调用递归函数。 并且可以在外层循环中添加判断是否已经有序的终止条件来减少遍历次数。英文: we can implement selection sort with recursion: when the length of piece which need to be sorted equal 1 , r..原创 2022-03-17 10:46:00 · 1382 阅读 · 0 评论 -
实现一个能够在O(1)时间复杂度内求出栈内最小值的栈(对栈内元素不排序或排序的算法实现)
1.思路:对于不排序:可以利用编译原理中状态栈的概念,使用另一个栈保存对应位置及其下方元素中的最小值对于排序:在压入时利用一个临时栈对元素进行排序2.具体实现代码:(1)实现的栈的类:class min_stack { stack<int> element; //用于保存实际数据的 stack<int> min_e; //用于保存每一个元素要压入时,该栈内最小元素的值public: void push1(int a); //用于实现题目1 void p原创 2022-03-17 10:35:09 · 533 阅读 · 0 评论 -
给定一段序列输出最大子数组和以及最大子数组的开始,结尾索引值
1、思路:1.贪心:若当前指针所指元素之前的和小于0,则丢弃当前元素之前的序列 遍历过程中需要维护当前和,之前和,最大和,最大和的前后边界以及当前值 时间复杂度:o(n),只遍历了一次数组 空间复杂度:o(1),只使用了常数空间2.动态规划:若前一个元素大于0,则将其加到当前元素上 过程中记录最大元素,以及最大元素所在位置即可 时间复杂度:O(n) 空间复杂度:O(1) 寻找最大子数组起始边界:从最大元素所在位置向前回溯,直到元素值小于0。2、测试数据:输入..原创 2022-03-13 17:36:59 · 7862 阅读 · 0 评论 -
使用宽度搜索(bfs)寻找一条从源点到终点的路径
具体实现:链接链表+bfs+类dijkstra思想+递归原创 2022-03-03 22:24:32 · 415 阅读 · 0 评论 -
索引红黑树的插入和删除实现
思路:(1)插入: 根节点设置为黑色 插入节点初始为红色,先确定插入位置,当父节点为红色时需要调整。 由于需要保证root指向树的唯一入口,并且调整中的旋转会对root产生影响,所以调整时,需要分为: 1.插入节点的祖父节点是根节点 2.插入节点的祖父节点不是根节点 区别:是否需要回溯(将插入节点的祖父节点看做插入节点进行调整) 旋转调整: (1)兄弟节点是黑色或者为空时:需要旋转(参考AVL的LL型、RR型、LR型、原创 2022-03-03 15:56:55 · 365 阅读 · 0 评论 -
寻找序列中第k大的数
思路: (1)利用类快排的算法来写 (2)使用k大小的最小堆实现,根节点处就是所求值原创 2022-03-01 14:40:31 · 249 阅读 · 0 评论 -
快排具体实现代码
核心:比较排序,交换排序。两个哨兵。原创 2022-02-26 08:51:00 · 209 阅读 · 0 评论 -
大数相乘(超过64位的数字)
题目:大数相乘(超过64位的数字相乘)原创 2022-02-23 09:28:07 · 1983 阅读 · 0 评论