原创 貪喫蛇的java代碼分析(三)

代碼剖析 在上一篇文章中,我們完成了貪喫蛇部分代碼的構造。回頭審視我們寫的代碼與思路,會發現我們遺漏了一個重要的地方,那就是:貪喫蛇的自身移動。想必大家都知道,貪喫蛇自身是會自己移動的,並且會跟隨你的方向來不斷移動。我們需要在

原创 貪喫蛇的java代碼分析(一)

自我審視 最近自己學習java已經有了一個多月的時間,從一開始對變量常量的概念一無所知,到現在能勉強寫幾個小程序玩玩,已經有了長足的進步。今天沒有去學習,學校裏要進行畢業答辯和拍畢業照了,於是請了幾天的假,自己也就有了一點

原创 貪喫蛇的java代碼分析(二)

代碼剖析 貪喫蛇是一款十分經典的小遊戲,對初入coding的朋友來說,拿貪喫蛇這樣一個案例來練手十分合適,並不高的難度和成功後的成就感都是學習所必須的。下面我將依照我當時的思路,來逐步分析實現的整個過程。 讓我們逐一分析。首先

原创 貪吃蛇的java代碼分析(三)

代碼剖析 在上一篇文章中,我們完成了貪吃蛇部分代碼的構造。回頭審視我們寫的代碼與思路,會發現我們遺漏了一個重要的地方,那就是:貪吃蛇的自身移動。想必大家都知道,貪吃蛇自身是會自己移動的,並且會跟隨你的方向來不斷移動。我們需要在代碼中來

原创 貪吃蛇的java代碼分析(一)

自我審視 最近自己學習java已經有了一個多月的時間,從一開始對變量常量的概念一無所知,到現在能勉強寫幾個小程序玩玩,已經有了長足的進步。今天沒有去學習,學校裏要進行畢業答辯和拍畢業照了,於是請了幾天的假,自己也就有了一點空餘的時

原创 算法之自底向上的歸併排序

基本概念 之前使用自頂向下的歸併排序,我們的主要思想是將一個大問題分成一個小問題,通過解決一個一個小問題來最終完成大問題。既然我們可以通過化整爲零的方式Coding,那麼是不是也可以由簡入繁,由下到上? 仔細一想,我們可以先歸併小

原创 數據結構之堆的定義

基本概念 堆是一種基本的數據結構。在這裏我用數組來形容,在一個二叉堆的數組中,每一個元素都要保證大於等於另外兩個特定位置的元素。同時相應的,這些元素又要大於等於另外兩個相應位置的元素,整個數據結構以此類推。如果我們將整個數據結構畫成樹

原创 算法之希爾排序

基本概念 希爾排序是一種基於插入排序的快速排序算法。相較於傳統的插入排序,他在處理大規模亂序數組時具有較大優勢。試想一個無序數組,其最小值在數組末端,那麼如果使用傳統的插入排序,只能通過交換相鄰的元素一個一個地把最小值移動到第一個,顯

原创 算法之自頂向下的歸併排序

基本概念 試想一個操作,將一個數組(默認爲無序)切割成兩段,然後分別進行排序,然後將結果結合在進行排序歸併。在數據結構之中這是一種簡單的遞歸歸併排序算法,是應用高效算法設計中分治思想的典型例子。 歸併排序的基本邏輯是,要對數組[mi

原创 貪吃蛇的java代碼分析(二)

代碼剖析 貪吃蛇是一款十分經典的小遊戲,對初入coding的朋友來說,拿貪吃蛇這樣一個案例來練手十分合適,並不高的難度和成功後的成就感都是學習所必須的。下面我將依照我當時的思路,來逐步分析實現的整個過程。 讓我們逐一分析。首先,整個遊

原创 算法之快速排序

基本概念 快速排序是一種分治的排序算法。它將一個數組分成兩個子數組,將兩部分獨立的排序。當兩個數組都有序時整個數組也就自然有序了。在快速排序中,切分的位置取決於數組的內容。切分的關鍵在於使數組滿足下面三個條件: 1. 對於某個下表

原创 數據結構之鏈表

基本概念 鏈表是一種基本的數據結構類型,它由一個個結點組成。每一個結點包括一個數據的存儲和一個指向下一個結點的引用。在這個定義中,結點是一個可能含有任意類型數據的抽象實體,它所包含的指向結點的應用顯示了它在構造鏈表之中的作用。和遞歸程

原创 數據結構之棧的實現

基本概念 棧(下壓棧)是一種典型的數據集合類型,其內部的數據存儲方式採用先進後出的方式。當你在棧內部添加一個元素後,再次添加的元素會處於舊元素的上層,你可以想象一疊郵件放在桌上,你每看完一個新的郵件放在郵件堆上時,最頂上的郵件就是你最