位图算法(空间换时间)

简介: 位图算法(空间换时间)
#include <stdio.h>
#include <Windows.h>
void init(char *data, int len)
{
  unsigned int n = len * 8;
  char* p = NULL;
  for (unsigned int i = 0; i < n; i++)
  {
    if (i % 3 == 0)
    {
      p = data + i / 8;
      *p = *p | (1 << i % 8);
    }
  }
}
bool check(char* data, int len, int value)
{
  char* p = data + value / 8;
  bool ret = *p & (1 << (value % 8));
  return ret;
}
int main(void)
{
  unsigned int n = 4000000000;
  int len = n / 8 + 1;
  char* data = (char*)malloc(len);
  memset(data, 0, len);
  init(data, len);
  while (1)
  {
    printf("请输入要监测的数:[输入-1退出]");
    int value;
    scanf_s("%d", &value);
    if (value == -1)
    {
      break;
    }
    if (check(data, len, value))
    {
      printf("%d在数据集合中\n", value);
    }
    else
    {
      printf("%d不在数据集合中\n", value);
    }
  }
  system("pause");
  return 0;
}
相关文章
|
20天前
|
机器学习/深度学习 算法 搜索推荐
【解密算法:时间与空间的博弈】(中)
【解密算法:时间与空间的博弈】
|
20天前
|
存储 算法
【解密算法:时间与空间的博弈】(上)
【解密算法:时间与空间的博弈】
|
20天前
|
存储 算法 编译器
【解密算法:时间与空间的博弈】(下)
【解密算法:时间与空间的博弈】
|
6月前
|
算法 测试技术 C#
C++前缀和算法的应用:装包裹的最小浪费空间 原理源码测试用例
C++前缀和算法的应用:装包裹的最小浪费空间 原理源码测试用例
|
存储 算法 索引
哈希系列(空间换时间)
哈希系列(空间换时间)
|
算法
数据结构与算法题目集(中文) - 7-50 畅通工程之局部最小花费问题(35 分)
数据结构与算法题目集(中文) - 7-50 畅通工程之局部最小花费问题(35 分)
162 0
419. 甲板上的战舰 : 几种「扫描限制」&「空间限制」做法
419. 甲板上的战舰 : 几种「扫描限制」&「空间限制」做法
|
机器学习/深度学习
详解如何转换「背包问题」,以及逐步空间优化
详解如何转换「背包问题」,以及逐步空间优化
|
搜索推荐 算法
【排序算法】经典空间换时间基数排序
【排序算法】经典空间换时间基数排序
【排序算法】经典空间换时间基数排序
|
机器学习/深度学习 算法
【计算理论】计算复杂性 ( 时间复杂度时间单位 : 步数 | 算法分析 | 算法复杂性分析 )
【计算理论】计算复杂性 ( 时间复杂度时间单位 : 步数 | 算法分析 | 算法复杂性分析 )
222 0

热门文章

最新文章