几句话描述简单算法——排序与搜索
一、排序
1)桶排序
準備大量的木桶,用木桶的標號(數組下標)作為數據,按照木桶標號的順序進行排序。
2)選擇排序
從“待排序部分”找到最小值(或最大值),讓“待排序部分”的起始位置向后移動。
3)冒泡排序
比較相鄰的兩個數據,把這兩個數據按照大小關系正確的交換排列。
4)插入排序
不斷地把數據插入已排序的部分數據列,里面恰當的位置。
5)歸并排序
分兩步走,先了解下歸并的概念。歸并:把“幾個已排序的數據列”合并成“一個已排序的數據列”。
歸并排序由分割和歸并兩個構成。
6)希爾排序
希爾排序就是把數據以一定的間隔進行分組,并且對每個組進行的排序。
7)快速排序
從數據列中任意取出一個值P(基準值),再把“>P”和“<P”的值分離出來,得到新的數據列,P在數據列中的最終位置就確定了。
?
二、搜索
1)線性搜索
線性搜索就是從起始數據開始,按順序排除,比較每個數據是否與目標數據一致。
2)二分搜索
二分搜索的前置條件是數據列已經排好序。
二分搜索專注數據列中間位置M1,將數據列分為左右部分,如果數據一致就結束;否則縮小范圍,在左邊或右邊數據列重復查找中間位置M2等,直到結束。
3)哈希搜索
1. 創建哈希表,利用哈希函數求得一個哈希值,將哈希值作為下標。
2. 哈希沖突,很有可能會出現哈希值相同,則可以在哈希值中保存一個單項列表(PHP中可以用Array)。
3. 通過哈希值限定到特定的分組里,實現高效搜索。
4)字符串搜索
“子字符串是數組(多個數據)”,將子字符串的每個字符和目標字符串中的字符一一比較,如果不匹配,重新匹配,下一次開始匹配的位置,就是在當前位置后移一位。
5)KMP搜索
KMP算法可以根據子字符串出現不匹配的位置,決定下一次開始比較字符的位置。
6)BM搜索
BM算法從子字符串的末尾字符開始匹配,根據不匹配的字符和位置信息,決定下一次匹配開始的位置。
?
?
參考資料:
寫給大家看的算法書
?
轉載于:https://www.cnblogs.com/strick/p/6428476.html
總結
以上是生活随笔為你收集整理的几句话描述简单算法——排序与搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【3-12】数据库子查询及聚合函数
- 下一篇: 使用logrotate做nginx日志分