原创 算法:用Java實現冒泡排序(BubbleSort)、插入排序(InsertSort)、選擇排序(SelectSort)

接下來我準備發表一系列關於排序的算法,本文我準備用Java實現冒泡排序、插入排序、選擇排序。具體的排序算法過程已經在註釋裏面了,大家可看註釋,也可複製代碼到IDE裏面,用DEBUG模式研究算法的過程: 1、冒泡排序(BubbleS

原创 算法:用Java實現快速排序(QuickSort)

本文我準備用Java實現快速排序。具體的排序算法過程已經在註釋裏面了,大家可以複製代碼到IDE裏面,用DEBUG模式研究算法的過程: import java.util.Arrays; import java.util.Random

原创 算法:用Java嘗試解決圖論算法中的網絡流問題,以求得最大流

這篇博文,我嘗試用Java解決圖論算法中的網絡流問題,以求得最大流的流量和與其對應的所有增廣路徑組合(認識什麼是網絡流問題和最大流:點我學習)。這次要解決的就是下面這幅網絡流圖的最大流: 我們構建上面網絡流圖的鄰接矩陣,上面的圖

原创 算法:用Java遞歸回溯求解八皇后問題的所有解(共92種解)

八皇后問題,就是國際象棋上面的皇后,可以橫豎斜地走,很威風。國際象棋棋盤是8*8的,上面需要放8個皇后,這8個皇后無論橫縱斜,都無法攻擊到其他的皇后,這樣就是一個八皇后問題的解。今天我們就用Java來實現八皇后問題的所有解: im

原创 算法:用Java實現雙軸快速排序(DualPivotQuickSort)

本文是用Java實現雙軸快速排序,我找不到參考的文章地址了,十分抱歉,在此感謝參考文章的原作者,是你給了我思路和靈感! 雙軸快速排序和普通的快速排序不同的地方在於,普通的快速排序選出一個數字,作爲一個基準值,然後通過數組值交換的方

原创 數據庫:SQL語句的執行順序,及每一步的詳細解釋

一、SQL語句的執行順序舉例(sqlServer版): (8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list> (12)INTO<new_table> (1

原创 證明:Java代碼在執行過程中,並不一定是從上到下,每句代碼依次順序執行的

今天給大家帶來一個毀三觀的結論:Java代碼在執行過程中,並不一定是從上到下,每句代碼依次順序執行的。這是不是很顛覆你的認知? 計算機在執行程序的時候,並不會嚴格按照代碼來順序執行。比如第一個指令,是從內存中讀取一個數據,而第二個

原创 算法:用Java實現跳錶(SkipList),讓查找的時間複雜度媲美紅黑樹

今天略微有些晚了,我就暫時不講解什麼是跳錶了,先上我實現跳錶的Java代碼以及測試結果,空了再補上 我自己用Java實現的跳錶類:SkipList.java import java.util.ArrayList; import j

原创 算法:用Java實現用KMP算法來進行字符串的匹配

KMP算法是一種改進的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人們稱它爲克努特—莫里斯—普拉特操作(簡稱KMP算法)。KMP算法的核心是利用匹配失敗後的信息,儘量減少模式串與內容串

原创 數據庫:MySQL數據庫使用踩坑記錄

如果表的數據量達到百萬甚至千萬以上的級別,則查詢速度會減慢,此時就應該考慮在表的某些字段建立索引 MySQL 的 IN 查詢,在數據量大的時候更應該建立索引提升查詢速度,但是要注意, MySQL5.5版本以前 IN 查詢是不走索

原创 算法:用Java實現有序trie樹,並用於實現單詞字典排序的功能

上一遍博客,我已經給大家介紹過trie樹。trie樹算是一種前綴樹,用來儲存單詞再合適不過了,而且很多單詞都有相同的前綴,如果用這個樹來存單詞,那是相當省空間的。今天我要實現的這個有序trie樹,和上一篇博客的trie樹的最大不同

原创 算法:用Java實現一個mini布隆過濾器(BloomFilter)

實際上,布隆過濾器是一種數據結構(我的博客以"算法"開頭的,都是指數據結構與算法)。布隆過濾器(BloomFilter)是一種比較巧妙的概率型數據結構,可以比較高效地進行插入和查詢(本博客的實現暫不包含刪除)操作。比如插入一些字符

原创 算法:用Java實現 AVL 二叉平衡搜索樹(Adelson-Velskii & Landis Tree)

今天我用Java給出一種經本人測試通過的、附測試用例的、可以直接使用的AVL樹的實現。AVL樹的概念,在CSDN上面隨便都可以搜得到,這裏就不再贅述了,就直接給大家附上AVL樹的Java實現源碼,你複製源碼後,可以直接在你的IDE

原创 算法:用Java實現trie樹,並用於實現敏感詞過濾的功能

trie樹,可能大家都比較陌生。trie樹,又叫字典樹,是一種樹形結構,一種哈希樹的變種。典型應用是用於統計,排序和保存大量的字符串(但不僅限於字符串),所以經常被搜索引擎系統用於文本詞頻統計。它的優點是:利用字符串的公共前綴來減

原创 算法:淺談算法思想中的動態規劃(Dynamic Programming),並附六個動態規劃算法題的詳細解法

動態規劃(Dynamic Programming),簡稱DP,是算法設計技巧的一種(還有貪婪算法、分治算法、回溯算法、隨機化算法等)。其主要思想,就是通過把原問題分解爲相對簡單的子問題的方式求解複雜問題的算法思想,當然,動態規劃只