原创 淺談排序算法之快速排序(6)

忙完論文的事,筆者終於有時間繼續學習算法了。以前一直覺得快速排序(Quick Sort)很神祕,今天筆者就學習一下《算法導論》關於快速排序的部分內容。 快速排序是一種最快情況時間複雜度爲O(n^2)的排序算法,但是其平均性能較好,

原创 淺談排序算法之基數排序(8)

基數排序(radix sort)是一種用於卡片排序機上的算法。對待排序數組A,算法先按最低有效位來進行排序,即首先根據所有元素的個位上的值進行排序,然後再根據十位上的值進行排序,直至超過數組中最大元素的寬度。爲了確保基數排序算法的

原创 Java StringTokenizer類解讀

StringTokenizer 類簡介 StringTokenizer 類允許應用程序將一個字符串分割爲各個標記。該類的方法不區分標識符、數字和帶引號的字符串,也不是識別和跳過註釋。分隔字符串的分隔符可以在 StringToken

原创 排序算法總結

排序算法作爲基礎算法,相信大家在學校上C語言課程的時候都接觸過一些。筆者這裏暫時將之前寫的排序算法博客簡單的總結一下。 冒泡排序及雙向冒泡排序 選擇排序 插入排序 合併排序(或歸併排序)及擴展 堆排序 快速排序 計數排序 基數排

原创 淺談排序算法之計數排序(7)

接下來的三篇博客裏,筆者將會簡單聊聊三種線性時間複雜度的排序算法,即計數排序、基數排序以及桶排序,均出自《算法導論》。 計數排序(counting sort)假設數組A中的所有元素都是0~k區間內的一個整數,其中k爲某個整數值。計

原创 Java File類解讀

文章目錄File類簡介File類總結字段構造器函數示例代碼 File類簡介 類 File 是文件或者目錄路徑的抽象表述,並非指的是表示文件的字符串。通常情況下來說,操作系統和用戶接口使用系統相關的路徑表示方式去表示文件或目錄,而

原创 Java Properties類解讀

Properties 類簡介 Properties 類可以保存持久的屬性,這些屬性可以保存在流(Stream)裏面或者從流裏面讀取出來。每一個鍵值對的鍵或者值都是一個字符串。 Properties 類通常可以在 Java 中用於讀

原创 Markdown學習筆記

文章目錄簡述編輯器基本語法強調換行標題This is the first titleThis is the second titleThis is the first titleThis is the third title列表塊

原创 淺談排序算法之堆排序(5)

近日,筆者忙裏偷閒,學習了下堆排序(Heap-Sort)。堆排序算法,就時間複雜度而言,堆排序跟合併排序(Merge-Sort)算法是一樣的,都是O(n * log(n));就排序方式而言,堆排序跟插入排序(Insertion-S

原创 淺談排序算法之冒泡排序(1)

今日打算入手學習一下算法相關的東西,就先從排序算法說起。冒泡排序(Bubble-Sort)應該是大學裏C語言課堂上學到的最早幾個排序算法之一的吧。考慮排序後數組爲升序排序的情況。冒泡排序,就是在每一次迭代循環中,從當前剩下的數組中

原创 淺談排序算法之合併排序(4)

在前三篇博客中,筆者分別講述了冒泡排序、選擇排序以及插入排序,這三種排序算法是比較基本算法,原理也好,實現也罷,難度都不是很大。筆者在這篇博客中,打算聊聊合併排序(Merge-Sort)。 《算法導論》中提到,合併排序是分治(Di

原创 淺談排序算法之冒泡排序(1)續

今天下午筆者在網上查閱算法時,無意間發現了一個算法,名曰“雞尾酒排序”。啥?沒聽過啊,點擊去一看,該算法是冒泡排序算法的一種改進。在每一次循環的時候,從當前剩下未排序的數組裏選擇最小值放在數組前面,最大值放在數組後面(這裏的前面與

原创 淺談排序算法之插入排序(3)

筆者在前面兩篇文章當中簡單介紹了下冒泡排序以及選擇排序,這裏順帶介紹下插入排序(Insertion-Sort)。 舉個栗子(出自《算法導論》第三版)。 一堆無序的撲克牌,從上面抽取第一張,放在手上,然後抽取第二張,比較和第一張的大

原创 淺談排序算法之選擇排序(2)

筆者在上一篇博客中回顧了下冒泡排序(Bubble-Sort),這裏寫篇博客講講選擇排序(Selection-Sort)。選擇排序在每一次的迭代中,不直接交換相鄰元素,而是從數組中選擇出當前數組中的最小值(最大值)的索引,並於當前待

原创 淺談排序算法之合併排序(4)續

筆者在上一篇博客中談到了合併排序算法,其是分治思想的一種體現。在《算法導論》後的一道例題上,筆者看到了一道例題如下: 假設A[1…n]是一個由n個不同元素構成的數組。若i<j且A[i]>A[j],則對偶(i, j)稱爲數組A的一