原创 08算法-二叉搜索樹(Binary search tree)

前言 本文主要講解的是二叉搜索樹,首先會羅列一些樹的基本知識,然後再介紹二叉搜索樹,講解動態數據結構的一些基本操作(Insert,query, delete),最後講解一些隨機構成一顆二叉搜索樹的期望深度。並用一個編程題來實戰一下

原创 06算法-查找第k小的數(order statistic)

前言 這個問題作用的數據集是這樣的,假設有一個數組,其裏面的每一個數據都不是重複的。然後在這樣的個數組裏,去尋找第k小的元素。這樣的方法可以先排序,然後獲取。這樣的算法的時間複雜度爲Θ(nlgn)\Theta(nlgn)Θ(nlg

原创 04計算機操作系統-虛擬內存

前言 本文是根據虛擬內存的總結,包括覆蓋技術,交換技術,虛存技術。虛擬內存的起因是應用程序的運行內存越來越大,而內存的增長不能滿足相應的需求,所有需要藉助於disk的容量提高程序的運行空間。 覆蓋技術 這個技術現在已經不再使用了,

原创 07算法導論-散列表(hash table)

前言 很多的應用都需要一些動態集合結構,這些動態集合結構都支持INSERT, SEARCH, DELETE的字典操作。對於普通的數組進行尋址我們需要Θ(1)\Theta(1)Θ(1)。但是我們實際存儲的關鍵字數比全部的關鍵字要小很

原创 05算法-線性時間排序

簡介 本文主要介紹決策樹模型,推導了基於比較的排序算法的最快速度,然後給出了一種在特定條件下的線性時間複雜度的排序算法。 decision-tree model 這裏決策樹就不多做介紹,其本質就是通過比較來給出所有排序結果的模型。

原创 04算法-快速排序(深入分析)

abstract 本文是對快速排序算法的深入分析,主要講解了快速排序算法的基本原理,時間複雜度分析以及如何去改進的快排算法,本文提供快排的僞代碼,以及用Golang實現的具體代碼。 這裏補充一下一般算法設計的思路,首先根據問題分析

原创 04計算機操作系統-虛存內存

前言 本文是根據虛擬內存的總結,包括覆蓋技術,交換技術,虛存技術。虛擬內存的起因是應用程序的運行內存越來越大,而內存的增長不能滿足相應的需求,所有需要藉助於disk的容量提高程序的運行空間。 覆蓋技術 這個技術現在已經不再使用了,

原创 03計算機操作系統-非連續地址分配(分段,分頁)

前言 本文是非連續地址分配課程的總結。本文主要介紹非連續地址分配, 非連續地址分配主要有:分段和分頁機制。分段有段表,分頁有頁表,來建立邏輯地址(page)與物理地址(frame)的映射關係。爲了減少頁表的容量,討論了一下反向頁表

原创 01算法-時間複雜度分析

算法 算法分析 本書是基於算法導論第一節課的總結。主要總結算法分析中的時間複雜度,並通過排序算法中的插入排序和歸併排序來分析。文章中的代碼由go語言實現 算法的時間複雜度的計算 分析算法運行的快慢,主要有以下幾個方面決定:輸入數據

原创 01計算機操作系統-啓動和中斷,異常,系統調用

操作系統運行的基礎常識 主要講解了操作系統的作用,以及操作系統是怎樣提供服務的 操作系統的作用 主要分爲:控制軟件,管理應用程序,爲應用程序提供服務,殺死應用程序;資源管理,管理外設,分配資源 操作系統作爲介質有(進程->CPU

原创 02算法-漸近符號,遞歸及其解法

算法 漸近符號,遞歸和解法 本書是基於漸近符號,遞歸及其解法第二節課的總結。主要分析了三種漸近符號看,以及三種解遞歸的方法 漸近符號 Ω(n2)\Omega(n^2)Ω(n2)表示當n足夠大的時候,運行時間一定小於n2n^2n2,