Libpasc-Algorithms คือ Delphi และ Object Pascal Library ของโครงสร้างข้อมูลทั่วไปและอัลกอริทึม ห้องสมุดขึ้นอยู่กับที่เก็บ C-Algorithms และเป็นชุดของคอนเทนเนอร์ที่ปรับให้เหมาะกับภาษา Pascal และระบบแม่แบบที่มีอยู่
ห้องสมุดได้รับการทดสอบสำหรับ
รับแหล่งที่มาและเพิ่มไดเรกทอรี ต้นฉบับ ไปยังเส้นทางการค้นหาโครงการ สำหรับ FPC เพิ่มไดเรกทอรี ต้นฉบับ ลงในไฟล์ fpc.cfg
โคลนที่เก็บ git clone https://github.com/isemenkov/libpasc-algorithms
เพิ่มหน่วยที่คุณต้องการใช้ในประโยค uses
กรอบการทดสอบประกอบด้วยส่วนผสมต่อไปนี้:
unit-testsTarraylist เป็นอาร์เรย์ทั่วไปของ T ซึ่งเพิ่มขนาดโดยอัตโนมัติ
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองรายการอาร์เรย์ จำเป็นสำหรับการจัดเรียงและฟังก์ชั่นการค้นหา
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
Tmultiarray เป็นอาร์เรย์ทั่วไปของอาร์เรย์ T ซึ่งเพิ่มขนาดโดยอัตโนมัติ
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองรายการอาร์เรย์ จำเป็นสำหรับการจัดเรียงและฟังก์ชั่นการค้นหา
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
TsortedArray เป็นอาร์เรย์ที่ปรับขนาดโดยอัตโนมัติซึ่งเก็บองค์ประกอบตามลำดับที่เรียงลำดับ ผู้ใช้กำหนด functor กำหนดลำดับการเรียงลำดับ การดำเนินการทั้งหมดใน TsortedArray รักษาคุณสมบัติที่จัดเรียงไว้ การดำเนินการส่วนใหญ่จะทำในเวลา O (n) แต่การค้นหาสามารถทำได้ในกรณีที่เลวร้ายที่สุดของ O (log n)
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองรายการอาร์เรย์ จำเป็นสำหรับฟังก์ชั่นการค้นหา
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
รายการที่เชื่อมโยงกันเป็นสองเท่าเก็บคอลเลกชันของค่า แต่ละรายการในรายการมีลิงก์ไปยังรายการถัดไปและรายการก่อนหน้า ดังนั้นจึงเป็นไปได้ที่จะวนซ้ำรายการในรายการในทิศทางใดทิศทางหนึ่ง
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองรายการ จำเป็นสำหรับการจัดเรียงและฟังก์ชั่นการค้นหา
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
โครงสร้างต้นไม้ AVL เป็นต้นไม้ไบนารีที่สมดุลซึ่งเก็บคอลเลกชันของโหนด แต่ละโหนดมีคีย์และค่าที่เกี่ยวข้อง โหนดจะถูกจัดเรียงภายในต้นไม้ตามลำดับของกุญแจของพวกเขา การดัดแปลงต้นไม้จะถูกสร้างขึ้นเพื่อให้ต้นไม้ยังคงมีความสมดุลตลอดเวลา (มีจำนวนโหนดที่เท่ากันเสมอที่ด้านข้างของต้นไม้)
ต้นไม้ไบนารีที่สมดุลมีประโยชน์หลายอย่าง พวกเขาสามารถใช้เป็นการแมป (ค้นหาค่าตามคีย์) หรือเป็นชุดของคีย์ที่สั่งซื้อเสมอ
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองปุ่ม
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
ตารางแฮชเก็บชุดของค่าที่สามารถแก้ไขได้โดยคีย์ เมื่อพิจารณาถึงคีย์ค่าที่สอดคล้องกันสามารถค้นหาได้อย่างรวดเร็ว
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classKeyBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองปุ่ม
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
ตารางแฮชหลายตัวเก็บชุดของค่าที่สามารถแก้ไขได้โดยคีย์ เมื่อพิจารณาถึงคีย์ค่าที่สอดคล้องกันสามารถค้นหาได้อย่างรวดเร็ว
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classKeyBinaryCompareFunctor และ ValueBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองปุ่ม
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
ชุดจัดเก็บชุดของค่า แต่ละค่าสามารถมีอยู่เพียงครั้งเดียวในชุด
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองรายการ
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
ฮีปประเภท ค่าที่มีลำดับความสำคัญต่ำสุดจะถูกเก็บไว้ที่ด้านบนของกองและจะกลับมาครั้งแรก
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองรายการ
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
ฮีปประเภท ค่าที่มีลำดับความสำคัญมากที่สุดจะถูกเก็บไว้ที่ด้านบนของกองและจะกลับมาครั้งแรก
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classBinaryCompareFunctor ขึ้นอยู่กับ utils.functor.tbinaryfunctor อินเตอร์เฟสและใช้เพื่อเปรียบเทียบสองรายการ
รายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
Trie เป็นโครงสร้างข้อมูลที่ให้การแมปอย่างรวดเร็วจากสตริงไปยังค่า
uses
container.trie;
type
generic TTrie<V> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
คิวที่สิ้นสุดสองครั้งเก็บรายการค่าตามลำดับ สามารถเพิ่มค่าใหม่และลบออกจากปลายทั้งสองของคิว
uses
container.queue;
type
generic TQueue<T> = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki
TMemoryBuffer เป็นโครงสร้างข้อมูลที่มีประโยชน์สำหรับการจัดเก็บบล็อกหน่วยความจำขนาดโดยพลการ เป็นการรับประกันการลบบล็อกหน่วยความจำเมื่อวัตถุถูกทำลาย คลาสนี้ใช้ WXWidGets WXMEMORYBUFFER API อินเตอร์เฟส https://docs.wxwidgets.org/trunk/classwx_memory_buffer.html
uses
container.memorybuffer;
type
TMemoryBuffer = classรายละเอียดเพิ่มเติมอ่านใน หน้า Wiki