原创 JetBrains ide 問題記錄

問題: 輸入賬號報『Certificate used to sign the license is not signed』 刪除 ~/Library/Preferences/ 目錄下對應軟件版本的緩存後重新打開

原创 [golang] 數據結構-堆排序

接上文 樹形選擇排序上篇也說了,樹形選擇排序相較簡單選擇排序,雖然減少了時間複雜度,但是使用了較多空間去儲存每輪比較的結果,並且每次還要再和勝出節點比較。而堆排序就是爲了優化這個問題而在1964年被兩位大佬發明。 原理首先有幾個關於樹的定義

原创 [golang] 數據結構-樹形選擇排序(錦標賽排序)

接上文 簡單選擇排序簡單選擇排序很容易理解,代碼也很容易實現。但畢竟比較次數太多。樹形選擇排序則對這個問題進行了改進。 原理簡單來說,樹形選擇排序(Tree selection sort)就是在選擇完一輪找出最小值後,直接在與最小值比較中稍

原创 [golang] 數據結構-地精排序

碎碎念這是一個名字起得很隨便的排序算法,是我我就叫他史萊姆排序ㄟ(▔,▔)ㄏ 原理地精排序是也是一種交換排序。它只進行一輪比較,在這輪比較中,遇到比較前面元素大就向後移動一位繼續比較,遇到比前面值小就和前面的值交換,並向前移動一位。 複雜度

原创 [golang] 數據結構-希爾排序

除了上篇介紹的二分插入排序,還有這次介紹的希爾排序(Shell's Sort),也是對直接插入排序算法的優化。 原理希爾排序,就是按某個增量值對數據進行分組,每組單獨排序好後,再縮小這個增量,然後按新增量對數據分組後每個分組再各自排序。最終

原创 [golang] 數據結構-直接插入排序

原理直接插入排序,也是一種非常簡單的排序算法。第一輪先從第二個元素開始,和第一個比較,如果較小就交換位置,本輪結束。第二輪從第三個元素開始,先與第二個比較,如果較小就與第二個交換,交換後再於第一個比較。如此循環直至最後一個元素完成比較邏輯。

原创 [golang] 數據結構-快速排序

快速排序是個非常經典、高效、常用的排序算法。很多語言標準庫裏的排序算法都有用到它。 原理快排原理其實比較簡單,就是將原本很大的數組拆成小數組去解決問題。要拆就得找個拆的位置。如果吧這個位置稱爲支點,那麼快速排序問題就變成了不斷的去找到拆分的

原创 [golang] 數據結構-冒泡排序

碎碎念不能再經典的排序算法,說到排序算法大部分可能第一印象就是它了吧。記得大學時老師還花了一節課的時間進行詳細解釋。 原理冒泡算法(bubble sort) 是一種很簡單的交換排序。每輪都從第一個元素開始,依次將較大值向後交換一位,直至整個

原创 [golang] 數據結構-雞尾酒排序

吐個槽又是一個不正經取名的排序算法。真要說和雞尾酒間的關係,大概就是想喝到雞尾酒(得到排序好的隊列)就要搖晃酒杯讓不同的成分混合均勻(向兩個方向冒泡排序) 原理雞尾酒排序(Cocktail Sort)是冒泡排序的一種優化算法。原本的冒泡排序

原创 [golang] 數據結構-簡單選擇排序

原理簡單選擇排序應該是最直觀最容易理解的排序方法了。直接從頭開始一個一個去比,找出最小的放到最左邊。再依次完成其他位的排序。 時間複雜度比較次數固定爲O(n^2),數據交換次數是0~n-1次因爲會交換不同位置相同數值的數據,所以選擇排序並不

原创 [golang] 數據結構-二分插入排序

接上文 直接插入排序直接插入排序每輪比較中,都需要把待處理的元素與前面每一位元素進行比較。那麼有沒有一種方法可以優化下,減少比較次數呢?答案當然是有的,下面介紹的二分插入就是直接插入排序的優化算法之一。 原理直接插入排序是挨個的去比較,而二