原创 JavaScript數據結構與算法(九)二叉樹和二叉搜索樹

樹是一種非順序數據結構,對於存儲需要快速查找的數據非常有用。樹是一種分層數據的抽象模型,現實生活中最常見的例子就是家譜,或者是公司的組織架構圖。 樹 樹的相關術語 樹中的每一個元素都是節點,節點分爲內部節點和外部節點。其中:至少有一個子節

原创 JavaScript數據結構與算法(八)遞歸

在之前的文章中我們學習了幾種常見的數據結構,接下來我們先了解一下遞歸思想,爲我們後面學習樹和圖奠定一定的基礎。 遞歸 理解遞歸 遞歸是一種解決問題的方法。通俗點來講,其核心思想就是函數自己調用自己,或者間接調用自身。而如果一直調用自己的話,

原创 JavaScript數據結構與算法(七)散列表

散列算法的作用是儘可能快的在數據結構中找到一個值,使用散列函數就可以知道值的具體位置,快速檢索到該值,而不需要像其他的數據結構一樣需要迭代整個數據結構才能找到該值。散列函數的作用是給定一個鍵值,然後返回值在表中的地址。話不多說,直接上實現散

原创 JavaScript數據結構與算法(六)字典

上一節,我們學習了集合,本節會繼續介紹跟集合類似存儲唯一值得兩種數據結構。在集合中,我們存儲的唯一值是值,而今天介紹的兩種數據結構是採用[鍵,值]的形式進行存儲,只不過實現的方式不同。 字典 字典和集合很類似,集合以[值,值]的形式存儲,而

原创 JavaScript數據結構與算法(五)集合

集合是由一組無序且唯一(不能重複)的項組成的,與我們高中數學學的集合同樣具有有限性,這種數據結構大多數用來存儲唯一元素。 集合 創建集合類 class Set { constructor() { this.items = {};

原创 JavaScript數據結構與算法(四)隊列和雙端隊列

我們已經學習了棧,隊列和棧非常類似,但是隊列遵循的是先進先出(FIFO)原則的一組有序的項,並從頂部移除元素,但是最新添加的元素必須排在隊列的末尾。在生活中也有隊列的應用,比如我們在售票處排隊等票,隊頭的人先拿到票,就走了,而新來的人,就必

原创 Javascript數據結構與算法(三)棧

棧是一種遵循後進先出(ILFO)原則的有序集合,新添加或待刪除的元素都保存在棧的同一段,稱爲棧頂,另一端就叫棧底。現實中很多例子採用了這種數據結構,比如一摞書,疊放的盤子。棧通常用來保存變量、方法調用,當然也可以用於瀏覽器歷史記錄。 基於數

原创 Javascript數據結構與算法(二)循環鏈表與有序鏈表

循環鏈表可以像單向鏈表引用,也可以像雙向鏈表有雙向引用。性能上也跟雙向鏈表差不多,如果position大於length/2,那就可以從尾部開始迭代,可以減少迭代的元素。唯一的區別在於最後一個元素指向下一個元素的指針(tail.next)不是

原创 javascript數據結構與算法(一)單向鏈表與雙向鏈表

線性表 (List):零個或者多個數據元素的有限序列。線性表是一個序列,具有一對一的關係,而不能具備一對多的關係。線性表要求有限性,數據類型也要相同。本文參考的主要是大話數據結構的原理進行理解,用Javascript實現線性表的相關操作。

原创 2014 -- android 面試題

1. 下列哪些語句關於內存回收的說明是正確的? (b ) A、 程序員必須創建一個線程來釋放內存   B、 內存回收程序負責釋放無用內存   C、 內存回收程序允許程序員直接釋放內存   D、 內存回收程

原创 2014 -- ISO 面試題

1.寫一個NSString類的實現 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;  + (

原创 2014 -- 經典PHP面試題

1.以下哪一句不會把 John 新增到 users 陣列?  $users[] = ‘john’;  成功把 John 新增到陣列 users。  array_add($users,’john’);  函式 array_add() 無定義

原创 2014 -- Java面試大全

JAVA相關基礎知識 1、面向對象的特徵有哪些方面     1).抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象包括兩個方面,一是過程抽象,二是數據抽象。    2).繼承:繼承是一種聯

原创 Java 網絡爬蟲技術

最近在項目中遇到運用到網絡爬蟲技術的一些問題,在此寫下一片記錄總結,同時給出一個小的例子,提供給朋友下載研究學習。 該項目採用網絡抓取圖片數據、流式佈局、響應式佈局、懶加載、動態切換加載實現web網頁抓取。 下面給出具體實現的一些圖片效果

原创 數據結構精要------直接選擇和堆排序算法

上篇總結中主要實踐了算法的內排序的交換排序,那麼接下來我們繼續實踐選擇排序的兩種:直接選擇和堆排序算法。 -----直接選擇排序 package com.sort; /** * 直接選擇排序算法 * @author weixing