1. 分治法:分治模型在每層遞歸的時都有三個步驟: a.分解原問題為若干個子問題,這些子問題是原問題的規模較小的實例; b. 解決這些子問題,遞歸地求解各子問題的規模足夠小,則直接求解; c. 合並這些子問題的解 成 原問題的解。 2. 歸並排序算法完全遵循分治模式 ...
排序算法是最基礎的一類算法。主要排序算法包括選擇排序 插入排序 冒泡排序 合並排序 堆排序和快速排序。把這些排序算法全部實現一邊,再把 算法導論 對應章節后面的習題做一遍,確實是系統學習算法的一個不錯的開端。 選擇排序 選擇排序的想法很簡單,把需要排序的數組看成一堆撲克牌:先查一遍,抽出最小的作為第一個張 在剩下的牌堆里再查一遍,選出最小的作為第二個元素 重復直到牌堆耗盡。想法簡單的其代價就是運行 ...
2012-12-12 14:07 4 2646 推薦指數:
1. 分治法:分治模型在每層遞歸的時都有三個步驟: a.分解原問題為若干個子問題,這些子問題是原問題的規模較小的實例; b. 解決這些子問題,遞歸地求解各子問題的規模足夠小,則直接求解; c. 合並這些子問題的解 成 原問題的解。 2. 歸並排序算法完全遵循分治模式 ...
1. 算法描述 快速排序(quick-sort)與前面介紹的歸並排序(merge-sort)(見算法基礎——算法導論(1))一樣,使用了分治思想。下面是對一個一般的子數組A[p~r]進行快速排序的分治步驟: ① 分解:數組A[p~r]被划分為兩個子數組A[p~q]和A[q+1 ...
1. 比較排序算法的下界 (1) 比較排序 到目前為止,我們已經介紹了幾種能在O(nlgn)時間內排序n個數的算法:歸並排序和堆排序達到了最壞情況下的上界;快速排序在平均情況下達到該上界。 如果仔細觀察,我們會發現:在排序的最終結果中,各元素之間 ...
插入排序 排序問題 輸入:n個數的一個序列<a1, a2, ..., an> 輸出:輸入序列的一個排列<a1', a2', ..., an'>,滿足a1' <= a2' <= ... <= an' 思路 插入排序的工作方式像許多人 ...
前言 最近學習了算法導論上的快速排序部分,有不少體會。 今天就來分享一下。在此歡迎大家批評指正文中的錯誤。 快速排序 正文 1.快速排序的優點 說起快速排序,它的名字就顯現出快排最大的優點————快。到底有多快呢?咱們用數據說話: 綜合一般情況來說,快排確實有(億點快)。特別是對較 ...
1. 前言 好久沒寫博客了,今天來一篇最近開始看的算法導論,這篇博客主要介紹插入排序,歸並排序, ...
1. 寫在前面 本篇博文是學習算法導論的第一次記錄,主要想介紹如何去證明算法的正確性;如何去評判一種算法的好壞;以及如何去改進算法。 2. 從插入排序說起 插入排序(insert-sort)是一種十分常見的算法,我們在生活中可能就經常在使用——玩撲克。考慮我們抓牌時的場景。首先,你的右手 ...
作為一名前線的碼農不時地看一下算法和數據結構還是很有必要的,雖然《算法導論》這本書很難啃,但還是有必要啃一下的。算法這東西和某種編程語言關系不大,在大學的課堂上書上一般是用偽代碼來描述算法的,而用C語言去實現。算法更多的是一種思想,一種解決問題的方法,多看看算法還是很有必要的,它可以開闊 ...