原创 選擇排序、插入排序、希爾排序總結

本來昨天想寫最小生成樹的kruskal算法,但是其中需要將圖的邊集數組進行排序,要用到排序算法,所以暫時先將kruskal算法放一下,把排序算法好好複習和總結一遍 以下的排序結果默認爲非遞減 1、選擇排序 選擇排序的思想:從第i個元素開始

原创 圖的最小生成樹kruskal算法總結

kruskal算法的思想 假如N={V,{E}}是連通網,那麼最小生成樹的初始狀態是由V個頂點自成連通分量構成的一片森林。在E中選擇權值最小的邊,當該邊對應的兩個頂點在不同分量時,則將該邊加入到最小生成樹中,否則的捨去,再選擇下一條代價

原创 對HashMap.put()和HashSet.add()的探究

這篇文章主要討論HashMap.put()和HashSet.add()其中的幾點關係和特性,即 1.HashSet的底層調用了HashMap 2.HashMap插入的entry允許key=null,value=null,HashSet也

原创 ArrayList源碼剖析,解開神祕面紗之擴容(一)

1. ArrayList的構造方法 1.1. 無參 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } 這

原创 二叉樹前序遍歷的遞歸與非遞歸算法

       前幾天參加了阿里暑期實習的內推面試,發現自己的數據結構算法基礎特別薄弱,比如其中一個問題是中序遍歷的遞歸與非遞歸算法,我平時看數據結構只知道遞歸算法,非遞歸的算法直接被問懵逼了,在思考了幾十秒之後想出了用數組存放每次遍歷節點

原创 紅黑樹-插入篇

出處:http://www.cnblogs.com/sandy2013/p/3270999.html 紅黑樹插入操作比較複雜,特地從網上整理了一下,下面這兩種解釋結合起來看,就可以輕鬆理解紅黑樹的插入操作了。 原博文的地址爲:http:

原创 圖的最小生成樹prim算法總結

昨天剛剛把prim算法複習了一遍,現在把將自己的理解與總結寫出來分享下,prim算法的思想通俗的講就是:將連通網N={V,E}的頂點分爲最小生成樹集合U與非最小生成樹集合V-U,然後從U中的頂點到V-U中的頂點的邊中選出一條權值最小的邊,

原创 堆排序、歸併排序、快速排序總結

昨天剛把這三個排序算法複習了一遍,其中歸併排序和快速排序特別的重要,一定要熟練並理解透徹! 以下排序的結果都默認爲非遞減   1、堆排序(默認大頂堆) 堆排序的思想:首先構建一個完全二叉樹,從最大的非葉子結點,如果該結點小於孩子結點,則把

原创 二叉樹中序遍歷和後序遍歷的遞歸與非遞歸算法

昨天寫的前序遍歷的遞歸與非遞歸算法,在非遞歸算法中主要還是借用到了棧這一工具,其實在中序遍歷和後序遍歷中依舊可以理由棧的特性來進行非遞歸的遍歷 操作。 1.中序遍歷 1.1 中序遍歷的遞歸算法 二叉樹的構造以在上一篇博文中有說到,這裏就

原创 ReentrantLock原理淺析

一、序言        最近一直在看高洪巖著的《java併發編程》,裏面介紹了java.util.cocurrent下的常用併發相關類,但是基本上都是介紹如何用這些類,以及這些類的作用,並沒有細究到相關原理,加上最近的工作內容很多涉及到異

原创 Git和GitHub連接後無法推送的問題

  昨天在用Git和GitHub連接上後,想用 git push -u origin master時,總是提示ssh:connect to host github.com port: connection time out錯誤,在Goog

原创 spring boot正常啓動後,頁面報404問題

前言 今天用eclipse搭建spring boot項目時,在確保了代碼和相關設置沒錯的情況下,在用瀏覽器訪問時,總是會報404錯誤 解決方法 spring boot 的啓動類只會掃描啓動類當前的包和包下的所有類,不同包的類是不會被掃描

原创 Python自動化腳本splinter框架chromedriver的安裝

前言 前幾天看了Python的splinter框架,今天打算動手寫一下。在用腳本打開chrome瀏覽器時,顯示沒有安裝chromedriver,因爲網上相關教程不多,所以現在把如何安裝chromedriver的教程寫下來 缺少chrom

原创 大數相乘

一、背景 最近在看算法的時候發現了一個問題,我們都知道方法的形參是要指定類型的,假如有以下方法 public int example(int a,int b){ int c = a+b; return c; } 其中的形參a和形

原创 git log統計每個作者的代碼量

前言 最近想寫一個腳本文件自動統計git裏每個作者分別增加了多少行代碼,於是上網Google下看別人是怎麼寫的,來來去去都是下圖這種需要提前知道作者名字的 這種腳本需要提前傳入author參數,當新增加一個author時就需要去改動代碼,