算法學習大致內容
排序問題
插入排序
冒泡排序
一次巡迴:左右之間互相比大小,若前面大的數就交換順序。
快速排序
第一次:從後向前找第一個比首元素小的元素,從前往後找第一個比首元素大的元素,找到後對他們進行交換。
第二次:從後面交換的位置開始向前找,再找第一個比首元素小的;從前面已經交換的位置開始,向後找第一個比首元素大的,交換位置。
……
如果交換後的位置,向前都比首元素小,向後都比首元素大,那麼這個位置就是首元素的位置,如圖中的2與5交換位置。
這樣我們就可以對這兩個子問題遞歸地,再用快速排序的算法對兩個子問題排序。(分治法的一種)
二分歸併算法
從中間先把數組劃分開,化爲兩個子問題,對左邊右邊兩個子問題同樣的使用二分歸併排序。
最後把兩個已經排好的子數組合並起來:每組的首元素進行比較,哪一個小,提取出哪個。1和2比,1小,提出來,接下來是3和2比,2小,提出來……
貨郎問題與計算複雜性
算法及其時間複雜度
時間複雜度
不在數組中時,都要比較n次,比較完後才能知道不在數組中。
上述改進算法,最壞情況下還是 w(n)=n。平均情況下則不一樣了。
算法的僞碼錶示