使用背景

通常,在做高性能计算时,我们需要随机的连接某些点。这些点都具有自己的度量值,显然,度量值越大的值随机到的概率就会越大。因此,采用加权值得方法:

void getdegreeSum(DG *g){memset(degreeSum,0,sizeof(uint)*MAXSIZE);uint i,last=0;for(i=0;i<(g->n);i++){degreeSum[i] = g->v[i].desum+last;last = degreeSum[i];}
}

这样degreeSum[]数组中存储的即是一个有序的数组,随机生成rand(max),随机数所在的区域的下表就代表选取到的点。

  传统的二分查找函数

传统的二分查找中,是指定元素,然后查找是否在其中,典型的算法如下:

int bsearchWithoutRecursion(int array[], int low, int high, int target)
{while(low <= high){int mid = (low + high)/2;if (array[mid] > target)high = mid - 1;else if (array[mid] < target)low = mid + 1;else //find the targetreturn mid;}//the array does not contain the targetreturn -1;
}

其中Low与high可以根据自己的需求,来定义

  cuda中的二分查找应用

问题背景:

指定的一个有序数组,给定一个随机数,要查询随机数所在的区域,即大于前一个值,小于当前值,而当前值的下标,即使所需:

实现方式:

__inline__ __device__ int binarySearch(uint *arr,uint length,uint target){int left=0;int right = length-1;while(left < right){int middle = (left+right)/2;if((target >= arr[middle-1]) && (target < arr[middle])){    //while(rand > degreedis[j])return middle;}else{if(target > arr[middle])left = middle+1;elseright = middle-1;}}return left;
}

引用的时候,直接在__global__函数中使用即可,返回值即使要查询的下标。

cuda中的二分查找相关推荐

  1. SGISTL源码探究-stl_alog.h中的二分查找算法

    前言 在上一小节中我们分析了stl_algo.h中的部分算法.本小节中我们将继续分析其中关于二分查找类的算法,即lower_bound.upper_bound.binary_search.equal_ ...

  2. ad09只在一定范围内查找相似对象_kafka日志段中的二分查找

    二分查找 Kafka 中直接接触索引或索引文件的场景可能不是很多.索引是一个很神秘的组件,Kafka 官方文档也没有怎么提过它.索引这个组件的源码还有一个亮点,那就是它应用了耳熟能详的二分查找算法来快 ...

  3. 折半查找并插入(在一个有序数组中通过二分查找数字,若存在,指出其是数组中第几个元素;反之插入数组并有序化)

    import java.util.Arrays; import java.util.Scanner;/*** 折半查找(二分查找):从中间找(数组默认排好序了)* @author Family hap ...

  4. C语言中的二分查找法

    ...cpp 二分查找法也称折半查找法,是一种有序的查找方法,时间复杂度为log以2为底n的对数.如果是无序的则要先进行排序操作.基本思想是:把要查找的值和中间元素比较.例如在1 2 3 4 5 6 ...

  5. 详解【C语言】中的二分查找法和折半查找法(例题解答)

    目录 问题 思路 详解 代码 问题 在一个有序数组中查找具体的某个数字n 比如我买了一双鞋,你好奇问我多少钱,我说不超过300元.你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜? 答案:你每次猜 ...

  6. python中的二分查找

    一,定义 二分搜索是一种在有序数组中查找某一特定元素的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中 ...

  7. python中的bisect模块与二分查找

    1.bisect模块概述 bisect是python的内置模块, 用于有序序列的插入和查找. 插入的数据不会影响列表的排序, 但是原有列表需要是有序的, 并且不能是倒序. Bisect模块提供的函数有 ...

  8. 考研数据结构之查找(9.8)——练习题之编写一个函数利用二分查找算法在一个有序表中插入关键字k并保持表的有序性(C表示)

    题目 编写一个函数,利用二分查找算法在一个有序表中插入一个关键字k,并保持表的有序性. 分析 先在有序表中利用二分查找算法查找关键字值等于或小于k的结点,m指向正好等于k的结点或l指向关键字正好大于k ...

  9. 二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现

    问题背景 今年的实习生招聘考试,我出了一道二分查找(Binary Search)的题目.题目大意如下: 给定一个升序排列的自然数数组,数组中包含重复数字,例如:[1,2,2,3,4,4,4,5,6,7 ...

最新文章

  1. 别光发Paper,搞点实际问题
  2. AE实现不同图层的合并C#代码
  3. linux 下启动mysql
  4. 【本周面试题】第5周 - 开发工具相关
  5. 的write方法有哪些参数_向子进程传递大量数据的方法
  6. linux cp命令 强制覆盖,Linux中使用cp命令进行强制覆盖的方法
  7. 张家口全国计算机等级考试,河北省张家口市2018年上半年计算机等级考试公告...
  8. linux下调整交换分区的大小
  9. 190208每日一句
  10. zabbix安装详解
  11. 利用beego开发网站(一)
  12. [渝粤教育] 徐州工业职业技术学院 橡胶原材料 参考 资料
  13. 以P2P网贷为例互联网金融产品如何利用大数据做风控?
  14. AndroidManifest merger failed with multiple errors, see logs
  15. android协议分析,对一个apk的协议分析
  16. 我的秋招经历(已完结)
  17. 京东数科商用智能机器人首次亮相2019CES
  18. 盛世昊通:从2021上海国际车展看汽车产业变革,这些信号不容错过
  19. pycharm终端pip显示成功却无法找到相应库
  20. 【leetcode刷题】 64.数组的度——Java版

热门文章

  1. Java基础篇:什么是死锁?如何去避免它?
  2. Somatic vs Germline Mutations
  3. jQuery 图像裁剪插件Jcrop
  4. javascript事件代理(Event Delegation)
  5. 【重点!记忆化递归+DP】LeetCode 72. Edit Distance
  6. 剑指offer——面试题47:不用加减乘除做加法
  7. 修改jupyter notebook的默认工作目录
  8. 关于协方差矩阵的理解
  9. tensorflow实践笔记:屏蔽GPU版tensorflow的提示、分布式训练部署时的问题以及tensorboard的查看
  10. 轻量级ORM框架 Bankinate