Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

advanced data structure in Pascal, include B-Tree,B+-Tree,B*-Tree,T-Tree,HashMap,priority queue,red-black-Tree,AVL-tree,Quad-Tree,SkipList,Sortable Single Linklist,Sort Function,LockFreeQueue,nth_element,M-tree,PDQSort

Notifications You must be signed in to change notification settings

terrylao/PascalContainer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

113 Commits

Repository files navigation

PascalContainer

high performance generic data structures and algorithms in freepascal.
B-Tree,
B+-Tree,
B*-Tree,
T-Tree,
HashMap,
priority queue,
red-black-Tree,
AVL-tree,
Quad-Tree,
SkipList,
Sortable Single Linklist,
Sort Function,
LockFreeQueue.
2023年08月28日 加入: nth_element. port from RUST version https://github.com/frjnn/floydrivest with fixed
一個C++ 的類 STL nth_element, 有用到的人有用囉。
2023年09月22日 加入: M-tree. port from 一個非常漂亮的code https://github.com/starkdg/mtree
2023年12月19日 加入: PDQSort. port from Orson Peters' PDQSort algorithm.
PDQSort has problem in segmented sort an array, but its full array sort is faster than quicksort.
2024年06月21日 加入: C++ like 的vector,大概類似啦
2025年06月21日 加入: CodaMinaArray 也是vector like 的,但沒有vector 省空間,但也沒有vector 的exception 問題。

contributor: gcarreno at github

基本上都夠用的。
Sort function 的測試:
測試參數: -O3
測試量:10M integer
測試結果:DualPivotQuickSort 1680ms > quicksort3PivotBasic 1700ms > quicksort 1770ms > IterativequickSort 1800ms > mergesort 2260ms > Iterativemergesort 3120ms。
generic QuickSort 與非 generic 的慢約500ms ,
非generic Quicksort 的 FPC 與 GCC 同樣開 -O3 ,FPC 慢約100ms。
在1M Integer 的 PDQSort 比我的QuickSort 快最多50ms。

源碼以BSD LICENSE 發佈:
BSD開源協議是一個給於使用者很大自由的協議。基本上使用者可以"為所欲為",可以自由的使用,修改源代碼,也可以將修改後的代碼作為開源或者專有軟件再發佈。

但"為所欲為"的前提當你發佈使用了BSD協議的代碼,或則以BSD協議代碼為基礎做二次開發自己的產品時,需要滿足三個條件:

如果再發佈的產品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協議。
如果再發佈的只是二進制類庫/軟件,則需要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協議。
不可以用開源代碼的作者/機構名字和原來產品的名字做市場推廣。
BSD 代碼鼓勵代碼共享,但需要尊重代碼作者的著作權。BSD由於允許使用者修改和重新發佈代碼,也允許使用或在BSD代碼上開發商業軟件發佈和銷售,因此是對 商業集成很友好的協議。
而很多的公司企業在選用開源產品的時候都首選BSD協議,因為可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發。

About

advanced data structure in Pascal, include B-Tree,B+-Tree,B*-Tree,T-Tree,HashMap,priority queue,red-black-Tree,AVL-tree,Quad-Tree,SkipList,Sortable Single Linklist,Sort Function,LockFreeQueue,nth_element,M-tree,PDQSort

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

Languages

AltStyle によって変換されたページ (->オリジナル) /