原创 數據結構與算法知識點整理(一)數據結構概述

數據結構概述 1.數據結構的研究內容:研究的是數據之間的彼此抽象的關係,不涉及具體的數據內容。 2.基本數據結構分爲:線性表、樹和圖。 3.數據結構分爲邏輯結構和物理結構。邏輯結構是抽象出來的理論模型,而物理結構是指實際存儲在磁盤、內存

原创 經典亂碼“燙燙燙”和“屯屯屯”

經典亂碼“燙燙燙”和“屯屯屯”      程序猿有個經典的內部笑話:手持兩把錕斤拷,口中疾呼燙燙燙。      寫過代碼的人都碰到過。最近從Google搜索頁調到百度的網頁上大量出現錕斤拷,不知怎麼回事。      燙燙燙和屯屯屯

原创 編程之美1.7 光影切割問題

問題描述:      不少人很愛玩遊戲,例如 CS ⑨。 遊戲設計也成爲程序開發的熱點之一,我們假設要設計破舊倉庫之類的場景作爲戰爭遊戲的背景。倉庫的地面會因爲陽光從屋頂的漏洞或者窗口照射進來而形成許多光照區域和陰影區域。爲了簡單起見,假

原创 編程之美2.21 只考加法的面試題

問題1:寫一個程序,對於一個64位整數,輸出所有的連續自然數之和的算式。 問題2:哪些數字不能這樣表示。 問題3:64位整數範圍內,哪個數字的子序列數目最多。      問題1好說,求平均數就可以得到了。研究一下問題2,我們可以列一

原创 數據結構與算法14:線性索引查找

數據結構與算法14:線性索引查找     線性索引查找是在待查詢序列比較大,或者不方便排序的情況下的一種措施,通過一個較小的索引來實現快速查找。比如漢語字典,我們需要先在前面的索引中找到這個字,然後再到後面去查找這個字的詳細資料,那麼前

原创 編程之美1.4 買書問題

     在節假日的時候,書店一般都會做促銷活動。由於《哈利波特》系列相當暢銷,店長決定通過促銷活動來回饋讀者。在銷售的《哈利波特》平裝本系列中,一共有五卷,用編號 0, 1, 2, 3, 4 來表示。假設每一卷單獨銷售均需要 8 歐元。

原创 數據結構與算法18:快速排序法QuickSort

數據結構與算法18:快速排序法QuickSort     快速排序法的基本步驟:     1. 選定一個key     2. 將比key小的放到左邊,比key大的放到右邊     3. 對key左右兩端分別快排 C語言代碼:

原创 編程之美1.6 飲料供貨

問題描述:      在微軟亞洲研究院上班,大家早上來的第一件事是幹啥呢?查看郵件? No, 是去水房拿飲料:酸奶,豆漿,綠茶、王老吉、咖啡、可口可樂……(當然,還是有很多同事把拿飲料當做第二件事)。管理水房的阿姨們每天都會準備很多的飲

原创 編程之美1.5 快速找出故障機器

     關心數據挖掘和搜索引擎的程序員都知道,我們需要很多的計算機來存儲和處理海量數據。然而,計算機難免會有硬件故障而導致網絡聯繫失敗或死機。爲了保證搜索引擎的服務質量,我們需要保證每份數據都有多個備份。      爲了簡單起見,我們假

原创 編程之美1.3 一摞烙餅的排序(Python)

問題:      星期五的晚上,一幫同事在希格瑪大廈附近的“硬盤酒吧”多喝了幾杯。程序員多喝了幾杯之後談什麼呢?自然是算法問題。有個同事說:“我以前在餐館打工,顧客經常點非常多的烙餅。店裏的餅大小不一,我習慣在到達顧客飯桌前,把一摞餅按照

原创 數據結構與算法16:最小生成樹普利姆prim算法

數據結構與算法16:普利姆prim算法     Prim算法是一個計算圖的最小生成樹的算法。圖的最小生成樹指的是一個圖中去掉一些邊,使得剩餘的邊仍然保持連通,包含全部的點,並且權值之合最小。經過這樣的處理後得到的肯定是一顆樹。    

原创 C和C++的數據類型所佔的空間

     C和C++的各種數據類型所佔據的字節數挺混亂的,因爲沒有一個明確的標準,不像Java和C#之類的語言,標準和編譯器都是一家做的,自然很明確。C的編譯器由各個商業公司或組織自行鍼對各自平臺環境進行開發,產生了很多的差異。這邊做個大

原创 數據結構與算法10:馬踏棋盤問題(騎士周遊問題)

    問題描述:在一個國際象棋的棋盤上,一個馬按照它的規則如何才能從一個點出發遍歷每一個位置,且每個點只訪問一次。     問題分析:這是一個深搜的問題,沿着一條路前進直到遍歷全部的點,那就完成了整個的過程。如果不行,就回退一步,換個

原创 數據結構與算法11:拓撲排序

數據結構與算法11:拓撲排序     拓撲排序是指在一個AOV網絡(http://baike.baidu.com/view/1475661.htm)中找到一種節點的排序序列,使得序列中的任意一個節點在它的所有前置節點的後面,滿足AOV所表

原创 數據結構與算法15:單源最短路徑弗洛伊德Floyd算法

數據結構與算法15:單源最短路徑弗洛伊德Floyd算法 另一個最短路徑算法:迪傑斯特拉Dijkstra算法     Floyd算法是另一種經典的最短路徑算法,不同的是,dijkstra算法僅計算了一個起點出發的最短路徑,而floyd