 嵌入式學習(xi)筆記:數據結構(gou)與算法之哈希表和(he)快速排序詳解
							時間(jian):2018-09-17      來源:未知
							嵌入式學習(xi)筆記:數據結構(gou)與算法之哈希表和(he)快速排序詳解
							時間(jian):2018-09-17      來源:未知 
							1. 查找(zhao)算法:hash(散(san)列表(biao))
定義:將查(cha)找的(de)記錄健(jian)(jian)值key和記錄的(de)存(cun)儲位(wei)置(zhi)通(tong)過(guo)(guo)一定的(de)映射關聯起來(lai)。通(tong)過(guo)(guo)健(jian)(jian)值和散(san)列函(han)數求出散(san)列地址(記錄的(de)保存(cun)地址),在(zai)該出進(jin)行查(cha)找
問題:構(gou)建(jian)的散列表存在(zai)一定的沖突
解決辦法:
開(kai)放地址(zhi)法:將發生沖(chong)突的記錄存儲在開(kai)放地址(zhi)中(從當前(qian)位置開(kai)始(shi)查找空閑的散列地址(zhi))
鏈(lian)接法(fa):將不同健值對應相同的散(san)列(lie)地址的記(ji)錄通過(guo)指針鏈(lian)接起來。HASH查找
指針數組 + 鏈表序列(lie)
2. 排(pai)序算法: 遞歸排(pai)序
數據(ju)分割(ge):將數據(ju)通過基準分割(ge)成兩個序列,左側比(bi)基準小,右側比(bi)基準大。
遞(di)歸排序(xu):將分割(ge)好(hao)的左右(you)序(xu)列再進(jin)行分割(ge),從(cong)而達到排序(xu)的效果(guo)
Void Quichsort(arr,low,high)
{
Int i=low , j=high; base=a[i];
While( i< j) //遍歷整個數序列
{
//從右(you)向左查(cha)找(zhao)第一個(ge)比(bi)base小的(de)值,并移位置(zhi) While(a[j]>=base && i< j)
j--;
a[i]=a[j];
//從(cong)左向右查找第一個比base大(da)的(de)值,并移(yi)位置
while(a[i]<=base && i < j)
i++;
a[j]=a[i];
}
a[i]=base; //最(zui)終(zhong)分割(ge)位(wei)置插入
quicksort(arr, low,i-1); //左分支遞歸
quicksort(arr,i+1,high); //右(you)分支遞(di)歸
}

