原创 八大排序算法(7)——基數排序

一、原理 基數排序是一種非比較型整數排序算法,其原理是將數據按位數切割成不同的數字,然後按每個位數分別比較,在類似對百萬級的電話號碼進行排序的問題上,使用基數排序效率較高。 二、代碼實現 三、時間複雜度

原创 八大排序算法(8)——堆排序

一、原理 堆排序是基於選擇排序的一種排序算法,堆是一個近似完全二叉樹的結構,且滿足子結點的鍵值或索引總是小於(或者大於)它的父節點。這裏採用最大堆方式:位於堆頂的元素總是整棵樹的最大值,每個子節點的值都比父節點小,堆要時刻保持這樣

原创 三大查找

一、順序查找 從頭到尾按順序查詢 二、二分查找 三、分塊查找(索引順序查找)

原创 八大排序算法(4)——希爾排序

一、原理 在插入排序基礎上,在一個list中,每次遞減劃分步長,選擇組的隊員進行比較,索引位置不變,value值交換大小,數據朝着局部有序的方向發展。 剛開始時候雖然分組比較多,但每組數據很少,組數減小後每組數據多但基本有序,而插

原创 八大排序算法(6)——歸併排序

一、原理 歸併排序的思想是將兩個有序表合併成一個新的有序表,即把待排序序列分爲若干個子序列,每個子序列是有序的。然後再把有序子序列合併爲整體有序序列。即先劃分爲兩個部分,最後進行合併。 二、代碼實現 三、時間複雜度

原创 23種設計模式(9)外觀模式

外觀模式是爲了解決類與類之家的依賴關係的,降低了類類之間的耦合度,該模式中沒有涉及到接口 1、創建多個類 public class CPU { public void startup(){

原创 23種設計模式(5)原型模式(Prototype模式)

該模式的思想就是將一個對象作爲原型,對其進行復制、克隆,產生一個和原對象類似的新對象。實際上就是實現Cloneable接口,重寫clone()方法 1、實體類 public class Prototype implements C

原创 23種設計模式(4)建造者模式(Builder模式)

建造者模式是一步一步創建一個複雜的對象,它允許用戶只通過指定複雜對象的類型和內容就可以構建它們,用戶不需要知道內部的具體構建細節 以肯德基套餐爲例 1、產品角色 創建一個產品類Meal public class Meal {

原创 23種設計模式(7)裝飾模式(Decorator模式)

裝飾模式就是給一個對象增加一些新的功能,而且是動態的,要求裝飾對象和被裝飾對象實現同一個接口,裝飾對象持有被裝飾對象的實例 1、創建一個接口 public interface Sourceable { public v

原创 23種設計模式(3)單例模式(Singleton模式)

單例對象能保證在一個JVM中,該對象只有一個實例存在 單例模式分爲懶漢式和餓漢式 一、懶漢式 只有當第一次調用創建對象的方法時纔會創建對象 public class Singleton { private static

原创 java集合總結

一、ArrayList DEFAULT_CAPACITY:默認底層數組初始容量(實際並沒這麼用) elementData:ArrayList存儲數據的底層數組結構 size:elementData數組實際使用的空間大小 總結:

原创 java8特性總結

一、接口的默認方法 Java 8允許我們給接口添加一個非抽象的方法實現,只需要使用 default關鍵字即可 該特性給接口帶來了衝擊,原來接口只提供方法的定義,不提供方法的實現,現在變得和抽象類很像了,而且接口是多繼承,又會造成一