插入排序
模擬:如果你會玩鬥地主,那麼摸牌後按從小到大插入,你這樣插入的過程就是插入排序
程式:在程式中的玩法就像有乙個人發牌,發齊了再拿牌,也就是一開始你就有17張牌,這17張牌對應17個元素的陣列。你從第二種牌開始進行調動,如果第二張牌比第一張牌小,那麼就把第二張牌抽出來,然後把第一張牌放入到第二張牌的位置,再把抽出的牌放到第一張牌的位置,那麼前兩張牌就排好了;就是這樣依次類推的過程就是我們程式實現的原理。
**如下:
public static void insertionsort(int a)
/*通過上面的迴圈就得到乙個空的位置,前面的做法就是先把本來的位置放空,
然後把當前的位置減一,那麼放回去的時候就是將當前位置加一就得到放空的位置了*/
a[j+1] = key;}}
演算法複雜度: 演算法導論(三)
對於矩陣乘法 c a b 通常的做法是將矩陣進行分塊相乘,如下圖所示 從上圖可以看出這種分塊相乘總共用了 8次乘法,當然對於子矩陣相乘 如a0 b0 還可以繼續遞迴使用分塊相乘。對於中小矩陣來說,很適合使用這種分塊乘法,但是對於大矩陣來說,遞迴的次數較多,如果能減少每次分塊乘法的次數,那麼效能將可以...
演算法導論學習筆記之演算法基礎篇
一 插入排序 插入排序屬於原址排序,演算法在陣列a中重排元素,演算法思想與玩撲克牌時依次將抓到的牌放到手中合適的位置一致,當輸入完成時,手中的牌即已完成排序。插入排序 a for j 2.a.length setp 1 a 下標從 1 開始計數 key a j i j 1 while i 0 a i...
演算法導論 一 演算法基礎
迴圈不變式主要用來幫助我們理解程式的正確性。迴圈不變式的三條性質 初始化 迴圈的第一次迭代之前,它為真。保持 如果迴圈的某次迭代之前它為真,那麼下次迭代之前它仍為真。終止 再迴圈終止時,可驗證演算法的正確性。偽 的重要性在於它可以簡潔地表達出演算法的本質 縮排代表塊結構 採用縮排代表塊結構可以大大提...