原创 【算法導論】線性時間選擇---從數組中選擇第i小的數

問題:從數組中選擇第i小的數,並且要求問題的時間複雜度爲O(n)。 代碼用到了隨機化的快速排序中的分組方法。 其基本原理爲:用快速排序的分組方法,隨機的選擇一個數組元素,使其大於左邊的元素,小於右邊的元素。然後,看這個元素的下表與要求元素

原创 【算法導論】c++實現的隨機化的快速排序

隨機化的快速排序: #include <iostream> #include <set> #include <string> void swap(int * a,int * b); int partition(int * array_l

原创 算法導論答案彙總

本文彙總網上的算法導論答案,不斷更新,希望對大家有所幫助。 第22章 22.1-5 平方圖 22.1-6 通用的匯 22.2-6 好選手和壞選手問題  問題說明  解決方案22.2-7 樹的直徑     代碼和證明   網易面試題 2

原创 【算法導論】22.2-7 樹的直徑問題

樹的直徑是指樹的最長簡單路。求法: 兩遍BFS :先任選一個起點BFS找到最長路的終點,再從終點進行BFS,則第二次BFS找到的最長路即爲樹的直徑;原理: 設起點爲u,第一次BFS找到的終點v一定是樹的直徑的一個端點證明: 1) 如果

原创 【算法導論】22.1 圖的轉置

用鄰接表表示的圖的轉置算法,比較簡單。 #include <iostream> using namespace std; #define N 8 #define INFINITE 0x7fffffff #define WHITE 1

原创 【算法導論】裝備線調度問題

       本程序爲算法導論中動態規劃章節(15.1)的裝配線調度問題的C++實現代碼,具體問題就不詳細說明了,代碼如下: #include<iostream> #include<string> const int max_len =

原创 【算法導論】c++實現計數排序

計數排序的基本思想爲:對每一個輸入的元素x,確定出小於x的元素的個數。有了這一信息,那麼就可以把x直接放到相應的位置上。 特點: 1 需要臨時的存儲空間,如果排序數據範圍特別大時,空間開銷很大。 2 適合於排序0 - 100以內的數據。

原创 【算法導論】用C++實現快速排序

本算法爲【算法導論】7.1的C++實現,代碼如下: #include<iostream> void swap(int * a,int * b); int partition(int * array_list,int left,int r

原创 【模式識別與機器學習】貝葉斯公式

1 貝葉斯公式 設x是個隨機變量,表示爲魚的光澤度,w1、w2分別表示鱸魚和鮭魚。已知的先驗概率爲p(w1)+p(w2) = 1。 P(x | w) 表示類別狀態爲w時的x的概率密度函數,有時也稱爲狀態條件概率密度。因此,p(x | w1

原创 【面試題精選】1-構造一個二叉查找樹-C++實現

根據輸入的數組元素,構造一個二叉查找樹。#include <iostream> using namespace std; /*二叉查找樹結構*/ t

原创 【算法導論】22.7 無向圖的廣度優先搜索--C++實現

這是用無向圖的廣度優先搜索代碼,如果是有向圖需要稍微修改,否則產生死循環。 鄰接矩陣表示的無向圖的廣度優先搜索: #include <iostream> #include <vector> #include <queue> using

原创 【模式識別與機器學習】模式識別中的一些基本概念

1 特徵(feature):如果有一個區分魚的類別的系統,可以分類的依據爲長度、光澤、寬度、鰭的數目和形狀、嘴的位置。這些可以利用的要素稱爲模式分類的特徵。 2 模型(model):如果魚的不同類別之間確實存在某種差異,我們稱之爲具有不

原创 【算法導論】二叉查找樹的操作C++實現

本代碼爲算法導論第12章中,僞代碼的C++實現: #include <iostream> #include <vector> using namespace std; /*二叉查找樹結構*/ typedef struct BSTree {

原创 【算法導論】同時找出最大值和最小值

在一個有n個元素的集合中,需要多少次比較才能確定其最小、最大元素呢?如果一個一個的比較,那麼需要n-1次比較,是不是有更好的方法呢? 如果,在比較中,記錄遇到的最大值和最小值。將輸入的元素兩兩比較,然後與當前的最大值、最小值進行比較。這樣

原创 【面試題精選】3 數字操作-翻轉及求和

在這裏介紹兩個操作數字的小程序,程序不難,但是需要一定的技巧:代碼如下: #include <iostream> using namespace std; int digitSum(int digit); int digitRevers