1. 程式人生 > >演算法筆記總結

演算法筆記總結

1.雜湊(hash)

  • 針對的問題:在M個數據中查詢是否存在N個目標資料
  • 特點:以空間換時間,降低演算法時間複雜度到log(M+N)
  • 操作方法:
    1. 預設一個bool型陣列hashTable[1000],其中hashTable[i]=true,{i=M[0],M[1],M[2],….M[m]},其餘預設為false.
    2. 輸入要查詢的資料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"); }
  • 列表內容