二维数组中查找某个值的实现思路

C语言 码拜 9年前 (2015-11-16) 864次浏览
给定一个二维数组int t[m][n],其中m和n千万级别,且t中没有任何的规律(如有序等)。有什么好的办法,在不用多线程等技术的前提下高效的实现?
解决方案:2分
用文件当数组使用吧
解决方案:5分
没有规律,你还是要遍历一遍的。
解决方案:2分
英雄所见略同!
解决方案:10分
// 创建文件句柄
HANDLE hFile = ::CreateFile(lpszFileName, GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// 创建文件映射
HANDLE hMap = ::CreateFileMapping(hFile, NULL, PAGE_READONLY | SEC_COMMIT, NULL, NULL, NULL);
// 读取映射中的内存
LPVOID lpBuffer = ::MapViewOfFile(hMap, FILE_MAP_READ, NULL, NULL, NULL);
// 好了文件的内存已经获取了,你可以随意处理了
// 释放映射内存
::UnmapViewOfFile(lpBuffer);
// 关闭文件映射
::CloseHandle(hMap);
// close file handle
::CloseHandle(hFile);

Linux下参考
void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset); 

解决方案:21分
int t[m][n]可以有那么大?m和n都千万级别,不说栈暴了,堆都暴了
假如要想查找快,你放数据就应该用关联式容器(如哈希表等储存),否则你查找时只能逐个遍历

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明二维数组中查找某个值的实现思路
喜欢 (0)
[1034331897@qq.com]
分享 (0)