原创 排序算法之終章總結與提升

至此我們介紹了插入排序、(冒泡排序)、歸併排序、堆排序以及快速排序,除此之外還有基數排序,計數排序和桶排序。 其中冒泡排序效率低且沒有插入排序有代表性,就不做過多描述。 對於小規模的輸入,插入排序是一種非常快的原址排序算法(原址指的是輸入

原创 數據結構之平衡二叉樹(紅黑樹)

接上文。 我們介紹二叉樹時,強調了它的優點:在它上面做任何字典操作的時間跟樹的高度成正比,那單純的二叉樹並不能保證樹的高度最低,於是人們就設計了諸如紅黑樹之類的平衡二叉樹——使得一定節點的情況下樹的高度最低。 紅黑樹詳細的介紹見算法引論第

原创 動態規劃之鋼條問題

先給出概述:動態規劃通常是用來解決最優化問題的。最優化問題指的是該類問題有很多可行解,我們希望找到最優解(最大或最小的解),更具體的來說:要得到規模爲n的問題的最優解,那麼會用到規模爲n-1的相似問題的最優解。 下面我們將通過鋼條切割問題

原创 排序算法之冒泡排序

冒泡排序是一種流行但低效的排序算法,它的原理是反覆交換未按次序排序的元素,可以做下了解不過真的沒什麼價值。 代碼如下: void BubbleSort(int* arr, int len) { for (int i = 0; i <

原创 排序算法之快速排序

我們先概述下快速排序的過程:對數組A[p,r]進行排序,第一步將數組A[p,r]分解爲三部分:A[p,q-1],A[q+1,r],A[q]其中A[p,q-1]中元素全部小於等於A[q],A[q+1,r]中元素全部大於A[q],這樣A[q]

原创 C++的結構體和函數

寫在前面:   開始正文之前我需要簡單介紹一下自己以及這個系列博客的目的。筆者是一名在讀的軟件工程的研究生(2017年)一直在自學算法和語言,寫博客最初的原因就是看了劉未鵬的《暗時間》,這個系列博客是爲了讓同樣自學的人少走點彎路加快建立

原创 基本數據結構——棧、隊列和鏈表

棧(stack)實現的是一種依照先進先出(last—in,first-out,LIFO)原則的結構,也就是說最後放入的元素總是最先被取出。 隊列(queue)實現的是一種依照先進先出(first-in,first-out,FIFO)原則的

原创 排序算法之堆排序

要理解什麼是堆排序(heapsort)首先要介紹堆,(二叉)堆是這樣的一種可以看成近似完全二叉樹的數據結構: 採用最大堆,最大堆要滿足的要求是對於任意一個節點i中的元素要大於其左孩子和右孩子節點中的元素。這樣根節點中所存儲的一定是改組元

原创 排序算法之插入排序

排序算法是算法導論一書中首先介紹的內容,由它引出瞭如何證明算法是正確的(循環不變式),也引出了算法複雜度的計算。 對插入排序而言,它的工作方式就像我們在打牌時排序一手撲克牌一樣。我們每次摸到一張牌後都會把這張牌與我們手裏的牌進行對比,

原创 數據結構之二叉搜索樹

什麼是二叉搜索樹呢?它與別的數據結構相比其優勢又是什麼呢? 一顆二叉搜索樹就是以一顆二叉樹來組織和存儲數據的,如圖所示(圖a是包含6個節點、高度爲2的二叉樹,圖b是包含相同關鍵字、高度爲4的低效二叉樹)。對比博文前面所介紹的鏈表,二叉樹也

原创 排序算法之歸併排序

要想深刻理解歸併排序我們首先介紹一下分治法: 但解決問題時,首先將問題分解成若干個規模較小的與原問題類似的子問題; 然後遞歸地求解各個子問題;(當問題足夠小時,直接求解) 最後我們要合併這些分解而來的子問題(注意這是一個與原問題不同的合併

原创 TCP/IP 體系結構的一些乾貨

想必很多人都聽過一些經典的問題: TCP三次握手 四次揮手是啥,TCP和UDP什麼區別?HTTP又是啥? 我想從更科普的角度講一下我看完計算機網絡之後的一些體會: 想象一下,我們通信手段一直在變,從烽火狼煙,飛鴿傳書,走鏢,郵寄,到電話,

原创 騰訊2018暑期實習生招聘感受,崗位是後臺開發TEG事業羣。

寫在前面:以前看過一個說法,你在面試大概進行到一半的時候基本就確定自己是否通過了,這裏我用實際例子給出反正,面試完還是收心等結果爲好。我的面試官人特別好,是校友,還是本家。面試時間是2018年的4月15號下午上來第一步自我介紹,然後介紹簡

原创 2019校招大疆筆試題計算期望

題目見圖,大致意思是n天計劃來減肥,每天分爲減肥a斤和增重b斤以及對應的概率,問n天后博主的體重的期望是多少。 思路:搜一下期望定義寫出最終所求的公式:最終體重*該體重對應的概率 求和即可。 採用樹的結構來實現這個公式。然後找到這個樹對

原创 2018年網易實習生筆試題集合之牛牛的揹包問題

問題描述,想必大家都知道01揹包問題,現在的情況是問有多少種裝填揹包的方式。思考:昨晚想了一晚上沒能想明白用動態規劃這題該怎麼做,狀態轉移方程神馬的真不知道怎麼寫(希望評論大神給點助攻)不用動態規劃這題怎麼思考呢?只能暴力枚舉了,講道理枚