原创 2. 基礎排序算法——選擇排序(golang)

選擇排序 和冒泡排序相比,選擇排序先是通過和比較,從而找到最小值的索引,最後進行交換。 重複上述過程,最後便能得到有序的數組。 代碼實現 func SelectSort(arr []int) []int { // 數組長度

原创 《大話數據結構》學習筆記 —— 03 線性表之循環鏈表(golang實現)

循環鏈表 前言 普通的單鏈表有一個明顯的缺點,如果不從頭結點出發,就無法訪問到全部結點。 定義 將單鏈表中終端結點的指針由空指針改爲指向頭結點,就使整個單鏈表形成一個環,這種頭尾相接的單鏈表稱爲單循環鏈表,簡稱循環鏈表。

原创 3. 基礎排序算法——插入排序(golang)

插入排序 插入排序的基本操作就是將一個記錄插入到有效表中。 代碼實現 package insertSort func InsertSort(arr []int) []int { // 數組長度 length := le

原创 《大話數據結構》學習筆記 —— 03 雙向鏈表(golang實現)

循環鏈表 定義 雙向鏈表是在單鏈表的每個結點中,再設置一個指向前驅結點的指針域。 代碼實現 package DoubleLinkling // 雙向鏈表結點 type DoubleLinkNode struct { va

原创 1. 基礎排序算法——冒泡排序(golang)

冒泡排序 冒泡排序是一種交換排序,它的基本思想是相鄰的元素進行比較交換。 代碼實現 package bubbleSort import ( "errors" "fmt" ) // 冒泡排序找最大 func Bubble

原创 《大話數據結構》學習筆記 —— 05 隊列(golang實現)

隊列 定義 隊列是一種先進先出(First in first out, FIFO)的線性表,它只允許在一端進行插入操作,而在另一端進行刪除操作。 允許插入的一端,稱爲隊尾。 允許刪除的一端,稱爲隊頭。 隊列的順序存儲結構 基

原创 Swoole基礎——09 異步Redis

前期準備 安裝redis服務 安裝hireids 重新編譯安裝swoole 1. 安裝redis 一、下載、解壓 curl -O http://download.redis.io/releases/redi

原创 Swoole進階——01 進程(管道通信)

定義 進程就是正在運行的程序的一個實例。 例如,我們在某個終端去執行一個php腳本,這個時候就可以認爲是開啓了一個進程。 基本使用 1. 創建一個子進程對象 // 普通形式 $process = new swoole_pro

原创 《大話數據結構》學習筆記 —— 01 數據結構

一、基本概念 1. 數據結構 + 算法 = 程序 程序設計的實質是對確定問題選擇一種好的結構,加上設計一種好的算法。 2. 數據 定義 可描述客觀事物的符號,是計算機中可以操作的對象,是能被計算機識別,並輸入給計算機處理的

原创 4. 進階排序算法——希爾排序(golang)

希爾排序 前言 插入排序在某些情況下,效率是很高的。 比如我們的記錄本身就是基本有序的,只需要少量的插入操作。 再比如,記錄少的時候,插入排序效率的優勢也是很明顯的。 可是現實中,哪有那麼理想的情況啊[>_<] 沒有環境,那我

原创 5. 進階排序算法——堆排序(golang)

前言 由於博主目前還沒有系統學習到二叉樹相關的知識,所以有關完全二叉樹的概念儘量不會提到。 下文會嘗試用最最簡單,最容易理解的方式進行描述。 堆排序的思想核心 前面提到的基礎排序算法,他們都有一個缺點,沒有把每一次的比較結果保

原创 6. 進階排序算法——歸併排序(golang)

歸併排序 歸併排序的思想核心 關鍵詞:分組、合併 首先將很長的序列進行分組,然後對其進行排序,然後將相鄰的分組合併… 如此重複,直至得到一個有序序列。 遞歸版本代碼實現 func MergeSort(arr []int)

原创 《大話數據結構》學習筆記 —— 03 線性表之單鏈表(golang實現)

單鏈表 定義 如果鏈表中的每個結點只包含一個指針,則該鏈表稱爲單鏈表。 單鏈表結構如圖所示: 代碼實現 package SingleLinkling import ( "fmt" ) // 定義單鏈表接口 type

原创 《大話數據結構》學習筆記 —— 03 線性表(golang實現)

線性表 定義 線性表:零個或多個數據元素的有限序列。 序列 元素之間是有順序, 若存在多個元素,則第一個元素無前驅元素,最後一個元素無後繼元素,每個元素有且僅有一個前驅和後繼元素。 而且元素類型也相同! 有限 線性表強調錶

原创 《大話數據結構》學習筆記 —— 04 棧(golang實現)

棧 定義 棧是一個後進先出的(Last in first out, LIFO)的線性表,它限定僅在表尾進行刪除和插入操作。 關鍵詞 棧頂、棧底 允許插入和刪除的一端稱爲棧頂,另一端稱爲棧底。 空棧 不包含任何數據元素的棧