原创 AVL樹—— C++實現

AVL樹的介紹 二叉查找樹的深度越小,那麼查找所需要的運算時間越小。一個深度爲log(n)的二叉查找樹,查找算法的時間複雜度也是log(n)。然而,我們在二叉查找樹中已經實現的插入和刪除操作並不能讓保持log(n)的深度。如果我

原创 貪心算法——單源最短路徑(Dijkstra算法)

關於貪心算法介紹: http://blog.csdn.net/mind_v/article/details/72956707 單源最短路徑——Dijkstra算法 問題描述 對於給定的加權有向圖G(加權鄰接數組表示),它的每一條

原创 貪心算法

最優化問題 定義:給定一組限制條件(constraint)和一個優化函數(optimization function),求出一個可行解(feasible solution),使得優化函數可能取得最優值,即最優解(optimal

原创 C++模板類中聲明友元函數重載輸入和輸出運算符時,提示無法解析的外部符號解決方案

在練習模板類的重載輸入輸出運算符時,編譯器提示“無法解析的外部符號”,代碼如下: template <typename T> class matrix { friend ostream& operator<<(ostrea

原创 分治算法

算法思想 分治算法把一個問題實例分解成若干個小型而獨立的實例,從而可以在並行計算機上執行;那些小型而獨立的實例可以在並行計算機的不同處理器上完成。 分治法的思想:將原問題分解爲幾個規模較小但類似於原問題的子問題,遞歸地求解這些子

原创 error C4146: 一元負運算符應用於無符號類型,結果仍爲無符號類型

在學習有符號類型整數運算時,會遇到溢出的可能: 如下代碼,tadd_ok函數能檢測計算結果是否溢出 #include<iostream> using namespace std; //判斷是否溢出,返回1則不溢出,0則溢出 in

原创 常見排序算法——桶排序(箱子排序)bucket Sort

桶排序是一個經典的排序算法,特點是速度快,算法複雜度爲O(n),且是穩排,當然也是最耗空間的一種算法。 例如: 1)排序一組數[7,3,19,11,6,8,1,15] 最大數是19,那首先創建20個空桶,接着就是把這些數依次放

原创 貪心算法——拓撲排序

關於貪心算法介紹: http://blog.csdn.net/mind_v/article/details/72956707 拓撲排序 問題描述 一個複雜的工程,經常可以分解成一組簡單一些的任務,這些任務完成了,整個工程就完

原创 紅-黑樹——C++實現

紅-黑樹基本概念 紅-黑樹(Red-Black tree)是一種特殊的二叉查找樹,因此具有二叉查找樹的特徵:任意一個節點所包含的關鍵字,大於左孩子的關鍵字,小於右孩子的關鍵字。樹中每一個節點的顏色或者是黑色或者是紅色,和AVL

原创 C++中new一個動態數組(內置類型和自定義類型的區別)

在學習數據結構與算法的時候,T *p = new T[n]的算法複雜度爲Θ(n),而int *p = new int[n]的算法複雜度爲Θ(1)。 C++ primer的動態內存的講解沒有關於這一點的解釋,自己測試了一下: #i

原创 編寫C++函數:識別一段string字符串是IPv4還是IPv6

今天做到Calix(南京凱易迅)的筆試題,其中有一題大致意思是:vector<string>中存有string字符串,識別每一個字符串是否是ip地址,三種可能:IPv4、IPv6、Neither,將每個字符串的識別結果依次存入一個

原创 添加文件夾右鍵用VSCode打開

添加右鍵VSCode打開 mark一下,後續使用。 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\VSCode] @="Open wi

原创 《深入理解計算機系統》|處理器體系結構

《深入理解計算機系統》|處理器體系結構 目錄 學習事物是怎樣工作的有其內在價值:處理器是如何工作的對於我們普通人來說一直是個祕密,我們將從零開始構建一個流水線處理器,爲了實現這一處理器的軟硬件,我們有大量的前提知識要學習,包括:指令系統

原创 理解C++中引用的底層實現

1、C++ Primer提到:引用並非對象,相反的,它只是爲一個已經存在的對象所起的另外一個名字。 引用的定義必須伴隨初始化,而且一旦定義了引用,就無法令其再綁定到另外的對象,之後每次使用這個引用都是訪問它最初綁定的那個對象。 2、何爲對

原创 Google MapReduce 總結

Google MapReduce 總結 MapReduce 編程模型 總的來講,Google MapReduce 所執行的分佈式計算會以一組鍵值對作爲輸入,輸出另一組鍵值對,用戶則通過編寫 Map 函數和 Reduce 函數來指定所要進行