原创 排序概論——選擇排序

常見的排序:選擇排序,直接插入排序,冒泡排序,堆排序,快速排序,歸併排序 接下來的幾篇博客,我將挨個介紹每種排序算法的思想,實現,空間複雜度,時間複雜度以及每種之間的異同點 一、選擇排序 1.思想:給定一組記錄,第一輪

原创 生產者消費者問題

package 生產者消費者; import java.util.ArrayList; import java.util.LinkedList; public class ProducerConsumerPattern { /

原创 HashMap HashTable HashSet區別

點擊打開鏈接

原创 自己寫一個死鎖

public class Lock1 implements Runnable{ private static Object o1=new Object(); private static Object o2=new Obj

原创 定時器的實現 Quartz

在我們的項目中,經常需要用到定時器來解決一些需要定時執行或者重複執行的工作,之前會選擇用線程來達到定時的效果 1.線程實現定時: public class QuartzThread extends Thread{ private Da

原创 ArrayList源碼剖析

一、ArrayList的底層實現是一個數組,數組裏元素類型是Object類型,可以存放所有類型的數據,對ArrayList類的實例的所有操作都是基於數組的操作。 ArrayList的數據結構如下:    二、ArrayList源碼分

原创 哲學家就餐

import java.sql.Time; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent

原创 Arrays工具類源碼的剖析

一、Arrays類是java.util包下的對數組進行操作的一個工具類,Arrays中的方法大體可以分爲以下8類: sort(對數組排序) binarySearch(二分查找數組中的元素) equals(比較兩個數組是否相等) copyO

原创 concurrentHashMap

http://blog.csdn.net/u012403290/article/details/67636469

原创 堆排序

private static void heapSort(int[] array, int length) { int end=length-1; while(end>1){ whi

原创 深拷貝 淺拷貝

當我們想複製一個簡單類型的數據時: int a=5; int b=a; 其他7種簡單類型的複製也可以通過這種方式進行。 但當我們想複製一個對象時,就沒有這麼簡單了, 有些初學者複製對象時應該會採用如下方法: public class

原创 求數組的小和

數組小和定義如下:有一數組s=[1,3,5,2,4,6],在s[0]的左邊小於或等於s[0]的數的和爲0,在s[1]的左邊小於或等於s[1]的數的和爲1,以此類推,把每個元素的左邊小於或等於當前元素的和加起來,就是該數組的小和,s的小和爲

原创 非遞歸實現兩個有序鏈表

public ListNode Merge(ListNode list1,ListNode list2) { //用mHead標識新鏈表的頭結點 //用c標識新鏈表的最後一個節點 //用li

原创 快速排序

一、算法思想:“分而治之的思想”, (1)在待排序列中,選擇一個基準元素(一般選擇第一個數或最後一個) (2)依據基準元素,將序列分成兩個子序列,小於等於基準元素的放在左邊,大於基準元素的放在右邊。 (3)合併兩個子序列(合併後不需要整體