一、哈希算法
? ? ? ? 1.將數據通過哈希算法映射成一個健值,存取都在同一個位置,實現數據的高效存儲和查找,時間復雜度由O(n)->O(1)
? ? ? ? 2.哈希碰撞:多個數據通過哈希算法得到的鍵值相同
二、哈希表
? ? ? ? 1.構建哈希表存放0-100之間的數據
? ? ? ? 2.哈希算法的選擇:將此數據的個位作為鍵值,然后用鏈表依次存入
三、排序和查找
(一)排序
? ? ? ? 1.冒泡排序:相鄰兩個元素比較,大的往后排,循環len-1次。
? ? ? ? ? ? ? ? 1.1時間復雜度為O(n^2)
? ? ? ? ? ? ? ? 1.2穩定的排序算法(兩個同樣小的,后面的會被排到前面去)
? ? ? ? 2.選擇排序:設每次循環前第一個元素為最小的下標為min,用這個依次去比較,如果有更小的將下標賦給min,循環比較完如果下標有變則交換元素。(存儲地址大用選擇排序)
? ? ? ? ? ? ? ? 2.1時間復雜度O(n^2)
? ? ? ? ? ? ? ? 2.2不穩定排序算法
? ? ? ? 3.插入排序:從第二個元素開始,依次和前面的元素比較,如果前一個比自己還小或者走到頭,插入即可。
? ? ? ? ? ? ? ? 3.1時間復雜度O(n^2),如果數組組有序時間復雜度可降低到O(n)
? ? ? ? ? ? ? ? 3.2穩定的排序算法
? ? ? ? 4.希爾排序:對半分,每一半的相同下標的元素用插入排序排序,然后循環繼續分半直到為1
? ? ? ? ? ? ? ? 4.1時間復雜度:O(nlogn)
? ? ? ? ? ? ? ? 4.2不穩定的排序算法
? ? ? ? 5.快速排序:左右兩邊low和high指針,先拿出來左邊的第一個元素20,然后從右邊high開始與20比較。20<33high左移,20>2將2放到low那里,然后開始一定low。最后將20放在兩個指針相遇的地方,繼續從兩邊開始進行此操作。
? ? ? ? ? ? ? ? 5.1時間復雜度O(nlongn)
? ? ? ? ? ? ? ? 5.2不穩定排序算法
(二)查找(二分查找)
? ? ? ? 1.時間復雜度為O(logn)