當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:數(shù)據(jù)結(jié)構(gòu)與算法之哈希表和快速排序詳解
1. 查找算法:hash(散列表)
定義:將查找的記錄健值key和記錄的存儲位置通過一定的映射關(guān)聯(lián)起來。通過健值和散列函數(shù)求出散列地址(記錄的保存地址),在該出進行查找
問題:構(gòu)建的散列表存在一定的沖突
解決辦法:
開放地址法:將發(fā)生沖突的記錄存儲在開放地址中(從當(dāng)前位置開始查找空閑的散列地址)
鏈接法:將不同健值對應(yīng)相同的散列地址的記錄通過指針鏈接起來。HASH查找
指針數(shù)組 + 鏈表序列
2. 排序算法: 遞歸排序
數(shù)據(jù)分割:將數(shù)據(jù)通過基準(zhǔn)分割成兩個序列,左側(cè)比基準(zhǔn)小,右側(cè)比基準(zhǔn)大。
遞歸排序:將分割好的左右序列再進行分割,從而達到排序的效果
Void Quichsort(arr,low,high)
{
Int i=low , j=high; base=a[i];
While( i< j) //遍歷整個數(shù)序列
{
//從右向左查找第一個比base小的值,并移位置 While(a[j]>=base && i< j)
j--;
a[i]=a[j];
//從左向右查找第一個比base大的值,并移位置
while(a[i]<=base && i < j)
i++;
a[j]=a[i];
}
a[i]=base; //最終分割位置插入
quicksort(arr, low,i-1); //左分支遞歸
quicksort(arr,i+1,high); //右分支遞歸
}