📄 odd_2.c
字号:
//该算法主要思路是:将128个特征值串成一串,只对第一维度的特征值进行搜索操作(目前暂时决定选用折半查找法,另外用一个数组存储
//第一维的特征值)
/******************************************************************************/
#define FEATURE_MAX_D 128//
struct feature
{
double descr[FEATURE_MAX_D];
};//存储文件数据的结构体
typedef struct datanode
{
struct datanode *predim, *nextdim;//分别连接同一数据的上一维和下一维特征值
double *data;//存储该特征值的指针
int Dim;//该特征值所在的维数
char visit;//标志该特征值的被访问情况(1表示已经被访问过;0表示未被访问过)
}DataNode;//存储特征值的结点结构
typedef struct
{
DataNode *Cross[FEATURE_MAX_D+1];
}crossdata;//每一列的结构
#include <stdio.h>
#include <math.h>
#include <malloc.h>
#include "function.h"//定义函数的文件
void main()
{
struct feature *feat1,*feat2;//定义feat1来读取文件数据
int DataNum1=0,DataNum2=0;
int i=0/*,j*/;
FILE *fp1,/*fp0,*/*fp2;///
crossdata CrossData;
fp1=fopen("a.dat","rb");//
fread(&DataNum1, sizeof( int ), 1, fp1 );//读取该文件中数据的数目
feat1=(struct feature*)malloc(DataNum1*sizeof(struct feature));//为feat申请空间
fread(feat1,sizeof(struct feature),DataNum1,fp1);//feat读取文件中的所有数据
fclose(fp1);
/* fp0=fopen("b.txt","w+");
for(j=0;j<DataNum1;j++,feat1++)
{
for(i=0;i<128;i++)
fprintf(fp0,"%f\n",feat1->descr[i]);
}
fclose(fp0);*/
Buildserach(feat1,DataNum1,&CrossData);//构造搜索结构
fp2=fopen("b.dat","rb");//
fread(&DataNum2, sizeof( int ), 1, fp2 );//读取该文件中数据的数目
feat2=(struct feature*)malloc(DataNum2*sizeof(struct feature));//为feat申请空间
fread(feat2,sizeof(struct feature),DataNum2,fp2);//feat读取文件中的所有数据
fclose(fp2);
SearchShortest(feat2,DataNum2,CrossData,DataNum1);
}//main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -