step3 day8資料結構之演算法

2022-08-19 10:48:12 字數 1108 閱讀 2901

關於演算法,理解的不算很深刻,了解到好的演算法不僅在時間的節約和空間的利用上,都最求最優的**。

比較經典的演算法就是各種排序、查詢了,下面貼兩個理解比較深的優化演算法(二分查詢在順序二叉樹那裡寫過了,不再重複,雜湊查詢的重點在於對映方法和衝突的解決)

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...