原创 堆排序(Heap Sort)-Java實現

堆排序(Heap Sort)算法簡介: 堆排序是利用堆這種數據結構而設計的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間複雜度均爲O(nlogn),它也是不穩定排序。首先簡單瞭解下堆結構。 堆是具有以下性質的完全二叉樹:每個

原创 冒泡排序(Bubble Sort)-Java實現

冒泡排序(Bubble Sort)算法簡介: 冒泡排序是一種常見的交換排序。在這個過程中,數字會像泡泡一樣,慢慢從右往左“浮”到序列的頂端,所以這個算法才被稱爲“冒泡排序”。其基本思想是兩兩比較相鄰記錄,如果反序則交換,直到沒有反序的記錄

原创 選擇排序(Selection Sort)-Java實現

選擇排序(Selection Sort)算法簡介:   選擇排序是利用逐個選擇的方式進行排序,逐個選擇出數組中的最小(或最大)的元素,順序放在已排好序的序列後面,直到全部記錄排序完畢。 選擇排序(Selection Sort)算法原理:

原创 張一鳴:技術與人文、責任與價值觀之間到底是什麼關係?

如果你印象中習慣了神采飛揚趾高氣昂高瞻遠矚的霸道總裁,張一鳴恐怕會讓你感到意外。 對於一家110億美元公司的創始人而言,他顯得太年輕和安靜——甚至有些乖巧。他的同事們告訴《財經》,這位CEO最激烈的情緒表達方式不過是“這個事情怎麼會這樣?

原创 插入排序(Insertion Sort)-Java實現

插入排序(Insertion Sort)算法簡介: 插入排序是一種叢序列左端開始依次對數據進行排序的算法。在排序過程中,左側的數據陸續歸位,而右側留下的就是還未被排序的數據。 插入排序(Insertion Sort)算法原理: 插人排序的

原创 數組模擬隊列——Java實現

隊列簡介: 隊列是一種有序列表,可以用數組或鏈表來實現。遵循先入先出的原則,即:先存入隊列的數據,要先取出,後存入隊列的數據的要後取出。在隊列中,允許插入數據的一端叫做隊尾(rear),允許取出數據的一端則稱爲隊頭(front)。使用數組

原创 歸併排序(Selection Sort)-Java實現

歸併排序(Merge Sort)算法簡介: 歸併排序是建立在歸併操作上的一種有效的排序算法,該算法是採用分治策略(Divide and Conquer)(分治法將問題分(divide)成一些小的問題然後遞歸求解,而治(conquer)的階

原创 稀疏數組與普通數組的轉換——Java實現

稀疏數組簡介: 所謂稀疏數組就是當數組中大部分的內容值都未被使用(或都爲零),在數組中僅有少部分的空間使用。因此造成內存空間的浪費,爲了節省內存空間,並且不影響數組中原有的內容值,我們可以使用稀疏數組去壓縮數據。 講一個實際需求中的例子:

原创 線性查找(linearSearch)與二分查找(binarySearch)比較—Java實現

一、線性查找(順序查找) 定義:在一列給定的值中進行搜索,從一端開始逐一檢查每個元素,直到找到所需元素的過程。 算法要求:1.數據存儲順序沒有限制;2.存儲數據類型沒有限制。 代碼實現: /** * 線性查找:順序查找法;在給定的一列

原创 二叉堆(Heap)與二叉查找樹(Binary Search Tree)的區別

問題描述 通常我們在學習二叉堆和二叉查找樹時是很容易混淆的,雖說堆也是一種完全二叉樹,但二者差別還是挺大的,本文試做分析。 邏輯結構 二叉堆和二叉查找樹都是結點帶權重,並在父子結點間滿足某種規則的數據結構。 二叉堆是一種完全二叉樹,分大根

原创 Java中Arrays.toString(a)與a.toString()的區別

1.Arrays.toString(a)方法是是用來將數組轉換成String類型輸出,入參可以是long,float,double,int,boolean,byte,object 型的數組,使用此方法可以很方便地輸出數組,而不用一個一個地