数据结构
文章平均质量分 75
persimmon_xh
这个作者很懒,什么都没留下…
展开
-
Dash:Scalable Hashing on Persistent Memory
Abstract字节寻址的PM让哈希表具有低延迟,持久化代价低,立刻恢复的潜能。最近的英特尔的DCPMM的出现加速了这一趋势。很多新的哈希表算法被提出,但大部分都是基于仿真并且在真的PM上的效果是次优的,他们都是piece-wise.partitial 的方法(不知道什么意思,我估计是能在部分或者局部可以取得最优的效果),这些方法都规避了很多重要的特性 ,例如可测量性、高的载重因子和立即恢复的能力。我们提出了Dash,一种基于PM的功能全面的方法,建立一个动态可升级的哈希表。这个方法具有之前提到的所有的原创 2021-08-04 16:13:59 · 498 阅读 · 0 评论 -
深度优先搜索(二)
N皇后问题用深度优先搜索,直接套用模板就好。注意mark函数和unmark函数mark函数把格子中的值-1,其中unmark函数,把格子中的值+1,为什么不是直接改变值,是因为有可能多个皇后都攻击那一个位置,如果直接改变值,那么可能会影响某个皇后的攻击范围。代码#include<iostream>#include<cstring>using namespace std;const int max_num=100;int n;int s[max_num][max_n原创 2020-12-28 10:51:44 · 99 阅读 · 0 评论 -
深度优先搜索(一)
深度优先搜索经大佬指导,才发现我对深度优先搜索的理解非常有问题,不过发现问题及时改正!先上深度优先搜索模板原创 2020-12-27 16:01:15 · 120 阅读 · 0 评论 -
分割子串
使用空格对子串进行分割一共两种方法手动while循环自动 ,使用stringstream头文件中的stringstream对字符串进行分割。#include<cstring>#include<vector>#include<iostream>#include<sstream>using namespace std;int main(){ vector<string> vec; vector<string> vec原创 2020-12-25 15:35:48 · 256 阅读 · 0 评论 -
排序(三)
归并排序今天写了最后一个排序算法,归并排序。归并是将两个或者两个以上的有序表组合成一个新的有序表。首先是两个两个元素进行归并,然后以两个元素排好序为一个单位,两个单位也就是四个元素进行归并,一次类推,这就是一个递归返回的过程。因此函数是递归调用的,首先将大表分为两部分,再将剩下的两部分再分为两部分,然后调用Merge函数,Merge函数的作用是将两部分的表合为一个有序表。空间复杂度是,辅助空间恰好占了n个单元,所以是O(n)时间复杂度:每一趟归并的时间复杂度是O(n),一共要进行O(log2n)..原创 2020-12-24 21:34:09 · 94 阅读 · 1 评论 -
排序(二)
冒泡排序冒泡排序很简单,将最大的数放在最后,或者将最小的数放在最前面即可。最好情况比较次数为n-1,移动次数为0,最好情况下的时间复杂度为O(n)最坏情况的时间复杂度为O(n^2 ) 平均时间复杂度为O(n^2)代码void bubble_sort(int num[],int n){ //将最大的数下沉 for(int i=0;i<n-1;i++) { for(int j=0;j<n-i-1;j++) { if(num[j]>num[j+1]) .原创 2020-12-23 21:52:44 · 104 阅读 · 0 评论 -
排序(一)
从小到大排序直接插入排序空间效率O(1)。最坏时间复杂度O(n^2),最坏的情况表中元素顺序和排序结果的元素顺序相反,比较次数为(2+3+…+n),总的移动次数为(3+4+…+n+1)。最好时间复杂度O(n),最好的情况是不需要移动,只需要比较一次,所以是O(n)直接插入排序是一种稳定的排序方法void insert_sort(int num[],int n){ for(int i=1;i<n;i++) { int tem=num[i]; if(num[i-1]>t原创 2020-12-23 08:43:43 · 96 阅读 · 0 评论