原创 程序員學習的網站(持續收集中)

1.http://www.mamicode.com/       碼迷 (看技術文章) 2.https://www.nowcoder.com/      牛客(刷題) 3.https://www.oschina.net/         

原创 刷題之百錢買百雞

/* 題目描述 公元前五世紀,我國古代數學家張丘建在《算經》一書中提出了“百雞問題”:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何? 詳細描述: 接口說明 原型:int GetResult(vector

原创 JAVA獲取基本類型的字節數大小

public class Main { public static void main(String[] args) { System.out.println("The size of short is "+Sh

原创 景兄弟手撕算法之八皇后問題

package test1; /** * 回溯思想,八皇后問題:任意兩個皇后都不能處於同一行、同一列或同一斜線上 */ public class BackTest { //皇后數組 private int[] qu

原创 圖的存儲以及廣度優先搜索算法和深度優先搜索算法

package graphi; import java.util.LinkedList; import java.util.Queue; /** * 採用鄰接表的方式存儲無向圖 */ public class UnGraphi

原创 景兄弟手撕算法之堆排序

堆,其實也是完全二叉樹的一種,每一個根節點都大於它的節點叫大頂堆,每一個根節點都小於它的節點叫小頂堆。 下面是基於大頂堆的堆排序實現: import java.util.Arrays; /** * 實現堆結構和操作 */ pub

原创 景兄弟手撕算法之計數排序

package test1; import java.util.Arrays; public class CountSort { /** * 計數排序: */ public static void

原创 景兄弟手撕算法之桶排序

package test1; import java.util.ArrayList; import java.util.List; public class BucketSort { /** * 核心思想是將要排序

原创 景兄弟手撕算法之二分查找(不重複的序列)

package find; public class SimpleBinarySearch { /** * 數據元素不重複情況下的二分查找 * @param args */ public

原创 景兄弟手撕算法之二叉查找樹的實現

二叉查找樹的定義: 一棵空樹,或者是具有下列性質的二叉樹: (1)若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; (2)若右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; (3)左、右子樹也分別爲二叉查找樹; (4)沒

原创 景兄弟手撕算法之快速排序

package test1; import java.util.Arrays; public class QuickSort { /** * 快速排序,簡稱快排,利用的是分而治之的思想。 * 如果要對m

原创 景兄弟手撕算法之歸併排序

我們先從數組中間分成前後兩部分,然後對前後兩部分分別排序,再將排序好的兩部分合並。 歸併排序的性能比選擇排序和冒泡排序以及插入排序的性能要更好。 11,8,3,9,7,1,2,5 算法代碼: import java.util.Arra

原创 景兄弟手撕算法之選擇排序

           選擇排序每次都要找到剩餘未排序區間的最小值,與未排序區間的第一個值進行交換。(選擇跑排序的效率不如插入排序和冒泡排序) 算法解析過程: 選擇排序  = 已排序序列    +    未排序序列 4 5 3 2 8 2

原创 景兄弟手撕算法系列之冒泡排序

冒泡排序算法的原理如下:  比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。  對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。  針對所有的元素重複以上的步驟,除了最後一個。  持

原创 景兄弟手撕算法之插入排序

插入排序的基本思想是將一個記錄插入到已經排好序的有序表中,從而一個新的、記錄數增1的有序表 升序的插入排序: package test1; import java.util.Arrays; public class InsertS