原创 圖論-單源最短路徑算法(拓撲,Dijkstra,Floyd,SPFA)
前言 單源最短路徑是學習圖論算法的入門級臺階,但剛開始看的時候就蒙了,什麼有環沒環,有負權沒負權,下面就來總結一下求單源最短路徑的所有算法以及其適用的情況。 單源最短路徑 設定圖中一個點爲源點,求其他所有點到源點的最短路徑。 先聲明一點:
原创 基於歸納的算法設計
前言 算法中有很多會用到歸納的思想,如遞歸等算法的基礎都是歸納。今天來看看歸納的主要思想以及基於歸納的一些算法設計。 歸納 證明當n = 1時命題成立。 證明如果在n = k時命題成立,那麼可以推導出在n = k+1時命題也成立。(m代表
原创 數學歸納法的應用
前言 學算法,不得不提的就是數學歸納法。許多算法都會用到歸納假設的思想,其追溯回去便是數學歸納法。 數學歸納法 最簡單和常見的數學歸納法是證明當n等於任意一個自然數時某命題成立。證明分下面兩步: 證明當n = 1時命題成立。 證明如果
原创 操作系統 fork與exec
前言 學習操作系統,首先便要學到process概念。process是什麼?Process – a program in execution。七十年代UNIX最先提出多進程的構想,之後該構想便廣泛用於linux與unix操作系統中。fork
原创 web前端開發小知識
1.目前市場主要瀏覽器及其內核 瀏覽器分爲shell和內核,其中shell就是外殼,是人機交互的部分,而內核尤其重要,是主要部分。 瀏覽器 內核 IE trident Google Chrome Gecko FireFox Webkit/
原创 深搜(dfs)與寬搜(bfs)分類解析
前言 搜索算法有許多種,但用的最多的還是深搜和寬搜,不管是值找最短路徑,還是找最優解,都能看到這兩個的身影。下面就來詳細看看這兩個的不同於適用情況。 深搜 深搜,看名字就知道到是優先往深處找,不撞南牆終不悔。深搜,像是一個人走迷宮,遇見岔
原创 優先級隊列——二叉堆的原理及實現
前言 在學習了隊列和棧之後,我們知道了兩種進出方式,隊列:先進先出,棧:後進先出,那如果我們想讓一堆數據按照其優先級順序進出呢?所以就引入了一種新的數據結構——二叉堆。 二叉堆 二叉堆是一種基於樹的優先級隊列,爲什麼要基於樹呢,因爲樹狀結
原创 二叉查找樹的原理及實現
前言: 學習了一些數據結構之後,你是不是已經有些小得意了,以爲數據結構就這點東西嘛,不就用好棧、隊列什麼什麼的就好,呵呵,那些只是皮毛。接下來的東西纔會讓你真正認識到數據結構的博大精深,當你看到接下來那些酷炫狂賽的操作時,你會驚歎於數據
原创 AVL樹的原理及代碼實現
前言: 如果你還沒有學習過二叉查找樹,那麼請你先去看看二叉查找樹,因爲AVL樹便是從二叉查找樹進化而來的,不看的話你無法理解AVL樹。 鏈接:二叉查找樹的原理及實現 如果你已經學習了二叉查找樹,你會覺得二叉查找樹性能在各方面都很好,就只有
原创 線段樹的原理及代碼實現(附例題分析)
前言 有時我們需要對數組中[i, j]區間中的所有值進行操作,這樣的操作對於普通的樹來說是十分麻煩的,所以我們引入了新的一種樹——線段樹。 線段樹 線段樹(segment tree),顧名思義, 是用來存放給定區間(segment, or
原创 動態規劃概念及應用
前言: 學習計算機,有一項是你永遠逃不掉的,那就是刷題。。。(好像其他科目也是一樣)而刷題呢,又肯定離不開那萬惡的OJ,從註冊賬號開始,我便每天受着這破玩意兒的折磨(此處刷過OJ的人會理解我的),但刷着刷着,我驚奇的發現裏面有好多問題都與
原创 二叉樹的鏈接實現及基本操作(C++)
前言: 學習了棧和隊列後,我們接着在數據結構的海洋中遨遊。這時的我已經被各種棧和隊列折騰的快不行了,然而,當學習了樹之後,才發現自己還是太年輕,跟樹比起來,棧和隊列是那麼的和諧與友好。先來小試牛刀一把,看看最簡單的二叉樹是怎麼實現的: 二
原创 線性表的單鏈表實現(c++)
前言: 前面學習了線性表的順序數組實現,那便想到線性表肯定還有鏈表實現,今天就來看看線性表的單鏈表實現。 線性表的單鏈表實現: 模板基類: template<class elemType> class list { public:
原创 線性表的順序實現(c++)
前言: 在學習了一些算法的基礎知識後,我開始了對數據結構的新一輪轟炸。數據結構和算法作爲計算機科學的基礎學科,必須要好好學,對不對?剛剛入了門,先來看看數據結構的線性結構,其下有線性表、棧、隊列等等我們都聽着耳熟能詳的的結構(只是耳熟
原创 哈希表(hash table)
前言: 當我們學習了數組和鏈表後,我們會發現數組的特點是:尋址容易,插入和刪除困難;而鏈表的特點是:尋址困難,插入和刪除容易。比如我們要找尋一個key對應的value,若用鏈表,時間複雜度爲O(n),即使採用二叉排序樹進行存儲,也最多爲O