user-0 提问: 求助

回复:
user: user-0
content: 如何提高数据存储、数据查询的效率

user: user-0
content: 引用 2 楼 user-2 的回复：[quote=引用 1 楼 user-2 的回复:] 看看吧  #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #define NUM 100   //为测试方便，定义成100个整数，可以根据需要自已改变数量  void RandNumFile() { 	int i = 0, j = 0; 	FILE *fp = fopen("A.txt", "w"); 	if (fp == NULL) 	{ 		printf("文件不存在。\n"); 		return 0; 	}   	srand((unsigned int)time(NULL)); 	for (i = 0; i < NUM; i++) 	{ 		j = rand() % NUM; 		fprintf(fp, "%d", j); 		fprintf(fp, " "); 	} 	fclose(fp); 	printf("文件写入成功。\n"); }  void ReadNumFile(int ArrNum[]) { 	int i; 	FILE *fp1 = fopen("A.txt", "r"); 	if (fp1 == NULL) 	{ 		printf("文件不存在。\n"); 		return 0; 	} 	for (i = 0; i < NUM; i++) 	{ 		fscanf(fp1, "%d", &ArrNum[i]); 	} 	fclose(fp1);	 }  void FindNumToFile(int ArrNum[]) { 	int i,x; 	 	for (i = 0; i < NUM; i++) 	{ 		printf("%d\t", ArrNum[i]); 		if ((i + 1) % 10 == 0) 		{ 			printf("\n"); 		} 	} 	while (1) 	{ 		printf("请输入要查询的数(输入-1退出)：\n"); 		scanf("%d", &x); 		if (x < 0) 		{ 			printf("退出查询！\n"); 			break; 		} 		 		for (i = 0; i < NUM; i++) 		{ 			if (x == ArrNum[i]) 			{ 				printf("%d在文件中。\n", x); 				break; 			} 			/*else 			{ 				continue; 			}*/ 		} 		if (i == NUM) 		{ 			printf("%d不在文件中。\n", x); 		} 	}	 }  int main() { 	int ArrNum[NUM] = { 0 }, x = 0; 	RandNumFile();  	ReadNumFile(ArrNum); 	 	FindNumToFile(ArrNum); 		 	 	printf("\n");	  	system("pause");  	return 0; }   #define _CRT_SECURE_NO_WARNINGS 这是VS2019上用的，如果是devc++，可以去掉这一句[/quote]谢谢你，我试试看

user: user-0
content: 引用 3 楼 自信男孩 的回复：有内存和时间限制吗？即空间复杂度和时间复杂度要求吗？  如果有空间复杂度的要求，可以考虑边读边对比。 如果有实践复杂度的要求，可以先读到内存，再对比。没有限制

user: user-1
content: 有内存和时间限制吗？即空间复杂度和时间复杂度要求吗？  如果有空间复杂度的要求，可以考虑边读边对比。 如果有实践复杂度的要求，可以先读到内存，再对比。

user: user-2
content: 引用 1 楼 user-2 的回复:看看吧  #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #define NUM 100   //为测试方便，定义成100个整数，可以根据需要自已改变数量  void RandNumFile() { 	int i = 0, j = 0; 	FILE *fp = fopen("A.txt", "w"); 	if (fp == NULL) 	{ 		printf("文件不存在。\n"); 		return 0; 	}   	srand((unsigned int)time(NULL)); 	for (i = 0; i < NUM; i++) 	{ 		j = rand() % NUM; 		fprintf(fp, "%d", j); 		fprintf(fp, " "); 	} 	fclose(fp); 	printf("文件写入成功。\n"); }  void ReadNumFile(int ArrNum[]) { 	int i; 	FILE *fp1 = fopen("A.txt", "r"); 	if (fp1 == NULL) 	{ 		printf("文件不存在。\n"); 		return 0; 	} 	for (i = 0; i < NUM; i++) 	{ 		fscanf(fp1, "%d", &ArrNum[i]); 	} 	fclose(fp1);	 }  void FindNumToFile(int ArrNum[]) { 	int i,x; 	 	for (i = 0; i < NUM; i++) 	{ 		printf("%d\t", ArrNum[i]); 		if ((i + 1) % 10 == 0) 		{ 			printf("\n"); 		} 	} 	while (1) 	{ 		printf("请输入要查询的数(输入-1退出)：\n"); 		scanf("%d", &x); 		if (x < 0) 		{ 			printf("退出查询！\n"); 			break; 		} 		 		for (i = 0; i < NUM; i++) 		{ 			if (x == ArrNum[i]) 			{ 				printf("%d在文件中。\n", x); 				break; 			} 			/*else 			{ 				continue; 			}*/ 		} 		if (i == NUM) 		{ 			printf("%d不在文件中。\n", x); 		} 	}	 }  int main() { 	int ArrNum[NUM] = { 0 }, x = 0; 	RandNumFile();  	ReadNumFile(ArrNum); 	 	FindNumToFile(ArrNum); 		 	 	printf("\n");	  	system("pause");  	return 0; }   #define _CRT_SECURE_NO_WARNINGS 这是VS2019上用的，如果是devc++，可以去掉这一句

user: user-2
content: 看看吧  #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #define NUM 100   //为测试方便，定义成100个整数，可以根据需要自已改变数量  void RandNumFile() { 	int i = 0, j = 0; 	FILE *fp = fopen("A.txt", "w"); 	if (fp == NULL) 	{ 		printf("文件不存在。\n"); 		return 0; 	}   	srand((unsigned int)time(NULL)); 	for (i = 0; i < NUM; i++) 	{ 		j = rand() % NUM; 		fprintf(fp, "%d", j); 		fprintf(fp, " "); 	} 	fclose(fp); 	printf("文件写入成功。\n"); }  void ReadNumFile(int ArrNum[]) { 	int i; 	FILE *fp1 = fopen("A.txt", "r"); 	if (fp1 == NULL) 	{ 		printf("文件不存在。\n"); 		return 0; 	} 	for (i = 0; i < NUM; i++) 	{ 		fscanf(fp1, "%d", &ArrNum[i]); 	} 	fclose(fp1);	 }  void FindNumToFile(int ArrNum[]) { 	int i,x; 	 	for (i = 0; i < NUM; i++) 	{ 		printf("%d\t", ArrNum[i]); 		if ((i + 1) % 10 == 0) 		{ 			printf("\n"); 		} 	} 	while (1) 	{ 		printf("请输入要查询的数(输入-1退出)：\n"); 		scanf("%d", &x); 		if (x < 0) 		{ 			printf("退出查询！\n"); 			break; 		} 		 		for (i = 0; i < NUM; i++) 		{ 			if (x == ArrNum[i]) 			{ 				printf("%d在文件中。\n", x); 				break; 			} 			/*else 			{ 				continue; 			}*/ 		} 		if (i == NUM) 		{ 			printf("%d不在文件中。\n", x); 		} 	}	 }  int main() { 	int ArrNum[NUM] = { 0 }, x = 0; 	RandNumFile();  	ReadNumFile(ArrNum); 	 	FindNumToFile(ArrNum); 		 	 	printf("\n");	  	system("pause");  	return 0; }