原创 學點算法(十)——二叉樹中序遍歷算法(迭代實現)

今天我們繼續來學習二叉樹的中序遍歷算法。 在學點算法(九)——二叉樹中序遍歷算法(遞歸實現)中我們已經學習了二叉樹中序遍歷的遞歸算法,今天我們繼續來學習它的迭代算法。 我們先來看整個遍歷的過程,如圖所示(重新播放需要刷新網頁):

原创 學點算法(九)——二叉樹中序遍歷算法(遞歸實現)

今天我們來學習二叉樹的中序遍歷算法。 二叉樹有多種遍歷方法,前中序遍歷和層次遍歷。我們今天的主角是中序遍歷,它的遍歷順序爲: 左子樹 根節點 右子樹 如下圖所示: 我們知道樹的定義本身就是遞歸式的,左子樹就是一棵以根節點的左

原创 學點算法(八)——括號匹配算法

今天我們來學習括號匹配算法。 作爲程序員應該都知道,我們在碼代碼的過程中,會用到各類括號,無論是{}還是()還是[]。括號都要求成對出現,要不然就會報語法錯誤。得益於強大的IDE,我們不需要自己去檢測括號,如果多寫或者漏寫了括號,

原创 學點算法(七)——十進制數轉換爲二進制數

今天我們來學習十進制轉爲二進制的算法。 大家學習計算機或者編程,都會知道計算機處理數據都是基於二進制的,而我們在日常生活中都是使用十進制。如果要用計算機存儲數據,肯定要將十進制轉化爲二進制,或者我們要查數據,要將二進制轉換爲十進制

原创 學點算法(六)——數組選擇排序

今天我們來學習數組的插入排序算法。 假設你是一個農場工人,收穫了100個蘿蔔,長短不一,農場主讓你從小到大排列好售賣,你應該怎麼做? 一般做法就是選一個蘿蔔,並假設它是最小的,然後依次與其他蘿蔔比較,如果發現更小的,則換成更小的蘿

原创 學點算法(五)——使用歸併算法求數組的逆序對數

今天來學習歸併算法的一個應用,求數組中的逆序對數。 首先我們需要知道逆序對是什麼東西:在一個數組中,有兩個元素,索引小的元素比索引大的元素大,那這兩個元素就構成一個逆序對。而一個數組中所有逆序對的個數就叫做逆序對數。 暴力求解法

原创 java虛擬機棧空間

翻譯自:https://www.geeksforgeeks.org/java-virtual-machine-jvm-stack-area/ 在線程創建的時候,JVM會爲每個線程創建一個單獨的棧空間。JVM的棧內存不需要是連續

原创 學點算法(四)——數組插入排序

今天來學習數組的插入排序算法。 在講算法之前,我們先來想象這樣一個場景:我們要上體育課,體育老師要求同學們從高到矮排好隊。當同學們都排好隊的時候,小甲同學遲到了。這時候小甲同學隨便站個地方可不行,因爲這樣隊伍就不是排好的了,所以要

原创 IntellijIdea創建簡單JavaWeb項目

在初始頁面,點擊Create New Project,如下 選中WebApplication, 把Create web.xml勾選上, 然後填入項目名, 點擊Finish完成項目創建。 目錄結構如下所示, 但是這個時候還不

原创 學點算法(三)——數組歸併排序

今天來學習歸併排序算法。 歸併算法的核心思想是分而治之,就是將大問題轉化爲小問題,在解決小問題的基礎上,再去解決大問題。將這句話套用到排序中,就是將一個大的待排序區間分爲小的待排序區間,對小的排序區間進行排序,然後再去解決大區間的

原创 Java Integer.bitCount()方法解析

引入 今天在使用Integer類的時候點進去看它的源碼,發現了bitCount()這麼一個方法,看它的介紹是用來獲取一個int中二進制位爲1的個數。然後看了它的實現,完全看不懂的節奏啊。 public static int bit

原创 學點算法(二)——有序數組二分搜索算法

今天來學習一下二分搜索算法。二分搜索算法針對有序數組,如果數組亂序,則無法使用二分搜索法。 先來看一下二分搜索算法的運行原理: 判斷區間是否有效,無效區間則退出循環。 取待查找區間的中間位置元素與目標值對比: 如果目標值小於中

原创 學點算法(一)——ArrayList內部數組實現元素去重

在ArrayList中,內部實際存儲的元素的是數組,要實現元素去重,即是對該數組進行去重。常規思路是藉助外部數據結構,如HashMap等來實現數據查找是否存在後去重,這裏我們來實現一個利用內部自身數組的去重方法。 爲了簡要說明,我

原创 算法學習——算法複雜度分析

時間複雜度分析 規則 單端代碼:只關注循環執行次數最多的一段代碼 多段代碼:加法法則,總複雜度等於量級最大的那段代碼的複雜度 嵌套代碼:乘法法則,嵌套代碼的複雜度等於嵌套內外代碼複雜度的乘積 多規模代碼:多個參數控制的則將多個複

原创 爲啥內存需要堆?

翻譯自:https://www.quora.com/Why-are-heaps-used-for-memory-allocation-Why-arent-stacks-or-any-others-used 我們需要知道的最重要的事