演算法精解十九(C語言版)

2021-06-28 20:51:24 字數 847 閱讀 5737

例項分析:插入排序

本節描述插入排序法在最壞情況下對執行時間的分析。插入排序是一種簡單的排序演算法。它在乙個有序的資料集中查詢位置新元素的位置,並將新元素插入進去。在第12章完整描述了插入排序演算法。插入排序的**如示例4-1所示。

首先要知道,哪行**會受要排序的資料量影響,我們看**中有乙個巢狀迴圈,外層的迭代數從i到size-1,內層的迭代數從j-1到所要插入的新元素的正確位置。其他**的執行都會消耗一段固定的四濺,與要排序的元素的個數無關。通常情況下,變數n定義為與演算法效能有關的引數。考慮到這一點,外層迴圈的執行時間t(n)=n-1,會固定消耗一段時間,檢查一下內部矛盾迴圈,考慮到最壞情況,假如在插入每個元素之前不得不從頭到尾遍歷整個有序資料集。這是因為,內層迴圈要為第乙個元素執行一遍,為第2個元素執行第二遍,依此類推,直到外部迴圈結束。實際上,這就是乙個球1到n-1累加和的過程,求和的結果為: t(n)=(n+(n=1))-n,從結果上看得出消耗了一定量的時間。(這個等式**於著名的從1到n的求和公式)結果如下:

演算法精解一(C語言版)

最近無事 抽出點時間來整理一下演算法 希望對自己有進一步的幫助和對學習演算法的同行有一些幫助吧!講到演算法 這個詞是很重乙個解決問題的途徑 無論在什麼行業 演算法都是很重要的。不管你是否承認,無論哪種軟體開發專案,幾乎所有的程式設計師,開發者在日常工作中都要同資料結構和演算法打交道。當我們閱讀原始碼...

演算法精解五(C語言版)

指標操作 在c語言中,對於任何型別t,我們都可以在t所在的記憶體位址處產生乙個包含對此物件位址的對應變數。如果用比較直觀方式來看待這種變數,它們實際上是一種指向物件的變數,如果用比較直觀方式來看待這種變數,它們實際上是一種指向物件的變數 因此,這些變數稱為指標。在c語言中,指標是構建資料結構和操作記...

演算法精解七(C語言版)

儲存空間分配 擋在c中宣告乙個指標時,與宣告其他型別的變數類似,一定量的儲存空間會分配給這個指標。通常情況下指標會占用乙個機器字長的儲存空間,但有些時候他們的大小也有所不同。因此 為了保證 的可移植性,不應該假設每個指標都占有乙個特定大小的儲存空間,指標變數的大小通常與編譯器的設定以及某些特定的c實...