搜索算法与图算法深度解析
1. 并发N - 元搜索算法
在某些情况下,算法预期操作执行一次,但实际执行了两次,这会使下一次while条件表达式的计算结果为FALSE。当NarySearch()函数成功搜索返回时,这种额外的边界更新将被直接丢弃。
locate数组在不同情况下的内容示例如下:
| 情况 | locate数组内容 |
| ---- | ---- |
| 键未找到 | R R R R L L |
| 键已找到 | R R R R E L |
1.1 并发解决方案
使用OpenMP实现并发N - 元搜索算法,主要是因为需要进行两次屏障同步:
- 第一次同步在从数据数组中确定匹配元素的位置与通过locate数组搜索以确定两个连续项之间的差异之间。
- 第二次同步在更新lo和hi与开始下一次while循环迭代之间。
以下是OpenMP实现的并发N - 元搜索算法代码:
void NarySearch (int *A, int lo, int hi, int key, int Ntrvl, int *pos)
{
float offset, step;
int *mid = new int[Ntrvl+1];
char *locate = new char[Ntrvl+2];
int i;
locate[0] = 'R'; locate[Ntrvl+1] = 'L';
#pragma omp parallel
{
while (lo <= hi && *po
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



