關於演算法,理解的不算很深刻,了解到好的演算法不僅在時間的節約和空間的利用上,都最求最優的**。
比較經典的演算法就是各種排序、查詢了,下面貼兩個理解比較深的優化演算法(二分查詢在順序二叉樹那裡寫過了,不再重複,雜湊查詢的重點在於對映方法和衝突的解決)
1.上台階問題,100個台階,可以走1個2個和5個,有多少總方案,我自己優化的話,只能從暴力窮舉→有限窮舉→去除無效窮舉這幾個方向優化,不過最終的**給了我很多的啟發,找規律後再寫**會好的多,**如下
#include
int fun1()
printf("count in fun1 = %d\n",count);
printf("fun1迴圈 %d 次\n",i*j*k);
}int fun2()
printf("count in fun2 = %d\n",count);
printf("fun2迴圈 %d 次\n",i*j*k);
}int fun3()
printf("count in fun3 = %d\n",count);
printf("fun3迴圈 %d 次\n",i*j);
}int fun4()
1.快速排序法:思想是將第乙個數作為標的,從前和從後分別找大於和小於的書,區分放入位置,已到達將標的放到中間,兩邊的總體大小已經排序ok,進而遞迴呼叫繼續排序。
#include
int bubblesort(int a,int size)}}
return k;
}void show(int a,int size)
a[i]=a[j];
printf("________________\n");
show(a,8);
while(ia[j]=a[i];
printf("________________\n");
show(a,8);
}a[i]=temp;
printf("____________________________\n");
show(a,8);
quicksort(a,lift,i-1);
quicksort(a,i+1,right);
return count;
}
資料結構(8)之堆
1.堆排序定義 n個關鍵字序列kl,k2,kn稱為堆,當且僅當該序列滿足如下性質 簡稱為堆性質 1 ki k2i且ki k2i 1或 2 ki k2i且ki k2i 1 1 i 若將此序列所儲存的向量r 1.n 看做是一棵完全二叉樹的儲存結構,則堆實質上是滿足如下性質的完全二叉樹 樹中任一非葉結點的...
資料結構和演算法 Day 3
演算法效率的度量方法 1 事後統計法 這種方法主要是通過設計好的測試程式和資料,利用計算機計時器對不同演算法編制的程式的執行時間進行比較,從而確定演算法效率的高低。2 事前分析估算法 在電腦程式編寫前,依據統計方法對演算法進行估算。影響高階語言程式執行時間的因素 1 演算法採用的策略,方案 2 編譯...
《大話資料結構》筆記 day3
獲得鍊錶的第i個資料的思路 宣告乙個結點 p 指向鍊錶第乙個結點,初始化 j 從 1 開始 當j i 時,就遍歷鍊錶,讓p的指標向後移動,不斷指向下一結點,j 累加 1 若到鍊錶末尾 p 為空,則說明第 i 個元素不存在 否則查詢成功,返回結點 p 的資料 核心思想 工作指標後移 插入 s next...