原创 程序員學習的網站(持續收集中)
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