演算法筆記總結
阿新 • • 發佈:2018-12-17
1.雜湊(hash)
- 針對的問題:在M個數據中查詢是否存在N個目標資料
- 特點:以空間換時間,降低演算法時間複雜度到log(M+N)
- 操作方法:
- 預設一個bool型陣列hashTable[1000],其中hashTable[i]=true,{i=M[0],M[1],M[2],….M[m]},其餘預設為false.
- 輸入要查詢的資料a時,可以通過獲取hashTable[a]的值確定a是否存在
#include<cstdio>
const int maxn=10000;
bool hashTable[maxn]={false };
int main{
int m,k,x;
scanf("%d %d",&m,&n);
//m為輸入資料的個數,n為要查詢的資料
for (int i=0;i<m;i++){
scanf("%d",&x);
hashTable[x]=true;
}
if(hashTable[n]==true)
printf("True");
else
printf("False");
}
- 拓展使用:記錄資料出現的次數時可以將hashTable定義為int型
#include<cstdio>
const int maxn=10000;
int hashTable[maxn]={0};
int main{
int m,k,x;
scanf("%d %d",&m,&n);
//m為輸入資料的個數,n為要查詢的資料
for (int i=0;i<m;i++){
scanf("%d",&x);
hashTable[x]++;
}
if(hashTable[n]==true)
printf("True");
else
printf("False");
}
- 列表內容