หน้าแรก
หน้าแรก
ให้เราเข้าใจว่าเราจะสร้างและแสดงโครงสร้างการค้นหาแบบไบนารีใน Javascript ได้อย่างไร ก่อนอื่นเราต้องสร้างคลาส BinarySearchTree และกำหนดคุณสมบัติ Node บนคลาสนั้น ตัวอย่าง class BinarySearchTree { constructor() { // Initialize a root element to null. &nbs
การแทรกครั้งแรกในไบนารีทรีที่สร้างขึ้นใหม่จะสร้างโหนดที่รูท การแทรกเพิ่มเติมจะถูกแทรกตามคุณสมบัติของโครงสร้างการค้นหาแบบไบนารีของเด็กที่อยู่ทางซ้ายที่มีขนาดเล็กกว่าระดับบนสุด และส่วนทางขวาจะมากกว่าผู้ปกครอง มาดูกันว่าเราจะใช้อัลกอริธึมนี้ในโค้ดได้อย่างไร - ตัวอย่าง insertIter(data) { l
เราจะใช้คุณสมบัติของ BST เพื่อค้นหาองค์ประกอบในนั้น ให้เราดูการใช้งานการค้นหาแบบวนซ้ำก่อน - ตัวอย่าง searchIter(data) { let currNode = this.root; while (currNode !== null) { if (currNode.data === data) { // Found the e
ใน Binary Search Tree หากเราดูคุณสมบัติที่ลูกทางซ้ายมีขนาดเล็กกว่าแม่เสมอ เราจะพบว่าถ้าเราวนซ้ำไปทางลูกทางซ้ายจนกว่าเราจะถึง โหนดที่ไม่มีลูกด้านซ้าย โดยทั่วไปเราจะพบองค์ประกอบที่เล็กที่สุดใน BST ให้เราใช้ฟังก์ชันนี้ในโค้ดของเรา นับจากนี้เป็นต้นไป เราจะใช้ฟังก์ชันเวอร์ชันเดียว กล่าวคือ แบบวนซ้ำหรือแ
บางครั้งเมื่อทำงานกับพจนานุกรม เราต้องการเพียงคีย์ของพจนานุกรมเป็นอาร์เรย์สำหรับงานบางอย่าง เราสามารถรับคุณสมบัติของวัตถุได้อย่างง่ายดายโดยใช้ Object.keys เราจะใช้วิธีนี้เพื่อส่งคืนคีย์จากวัตถุคอนเทนเนอร์ของเรา ตัวอย่าง keys() { return Object.keys(this.container);} คุณสามารถทดสอบสิ่งนี้ได้โดยใช้ -
เราจะใช้ฟังก์ชัน clear() ที่เพียงแค่ล้างเนื้อหาของคอนเทนเนอร์ ตัวอย่างเช่น ตัวอย่าง clear() { this.container = {} } คุณสามารถทดสอบสิ่งนี้ได้โดยใช้ - ตัวอย่าง const myMap = new MyMap(); myMap.put("key1", "value1"); myMap.put("key2", "value2"); &
ในที่นี้ เราจะใช้ a สำหรับแต่ละฟังก์ชันในคลาสของเรา และยอมรับการเรียกกลับที่เราสามารถเรียกใช้บนคู่คีย์-ค่าทุกคู่ มาดูกันว่าเราจะใช้ฟังก์ชันดังกล่าวได้อย่างไร - ตัวอย่าง forEach(callback) { for (let prop in this.container) { // Call the callback as: callback(key, va
นี่คือการใช้งาน MyMap class อย่างสมบูรณ์ - ตัวอย่าง class MyMap { constructor() { this.container = {}; } display() { console.log(this.container); } hasKey(key) { return ke
Hash Table เป็นโครงสร้างข้อมูลที่จัดเก็บข้อมูลในลักษณะที่เชื่อมโยงกัน ในตารางแฮช ข้อมูลจะถูกจัดเก็บในรูปแบบอาร์เรย์ โดยที่ค่าข้อมูลแต่ละค่ามีค่าดัชนีเฉพาะของตัวเอง การเข้าถึงข้อมูลจะเร็วมากหากเราทราบดัชนีของข้อมูลที่ต้องการ ดังนั้นจึงกลายเป็นโครงสร้างข้อมูลที่การแทรกและการค้นหาทำได้เร็วมากโดยไม่คำนึ
ให้เราตั้งค่าคลาสง่าย ๆ ที่เราจะใช้เพื่อกำหนดวิธีการเหล่านี้ทั้งหมด เราจะสร้างวัตถุคอนเทนเนอร์เพื่อจัดเก็บตารางแฮชและสร้างฟังก์ชันการแสดงผลเพื่อแสดงตาราง โปรดทราบว่าสำหรับการแก้ปัญหาการชน เราจะใช้การโยง ฟังก์ชันการแสดงผลจะนำแต่ละรายการ (ค่าที่แฮช) มาไว้ในตารางและพิมพ์คู่ทั้งหมดที่เกี่ยวข้องกัน ตัวอ
เมื่อเพิ่มองค์ประกอบลงในตารางแฮช ส่วนที่สำคัญที่สุดคือการแก้ปัญหาการชน เราจะใช้การโยงสิ่งเดียวกัน มีอัลกอริทึมอื่นๆ ที่คุณสามารถอ่านได้ที่นี่:https://en.wikipedia.org/wiki/Hash_table#Collision_ resolution ทีนี้มาดูการใช้งานกัน เราจะสร้างฟังก์ชันแฮชที่จะทำงานกับจำนวนเต็มเท่านั้นเพื่อให้ง่าย แต่อัลกอ
เราได้นำสิ่งนี้ไปใช้ในวิธีการวางของเราแล้ว เรามาดูแยกกันอีกครั้ง ตัวอย่าง get(key) { let hashCode = hash(key); for(let i = 0; i < this.container[hashCode].length; i ++) { // Find the element in the chain if(this.container[hashCod
ในการลบองค์ประกอบ เราเพียงแค่ต้องค้นหาและลบออกโดยใช้การเรียกฟังก์ชัน splice แบบง่ายๆ ซึ่งจะลบองค์ประกอบที่อยู่ในตำแหน่งออกจากอาร์เรย์ ให้เราดูการใช้งานของสิ่งเดียวกัน - ตัวอย่าง remove(key) { let hashCode = this.hash(key); for (let i = 0; i < this.container[hashCode].
ตอนนี้ให้เราสร้างฟังก์ชัน forEach ซึ่งจะทำให้เราสามารถวนซ้ำคู่คีย์-ค่าทั้งหมดและเรียกการเรียกกลับค่าเหล่านั้น สำหรับสิ่งนี้ เราเพียงแค่ต้องวนรอบแต่ละเชนในคอนเทนเนอร์ และเรียกการเรียกกลับของคู่คีย์และค่า ตัวอย่าง forEach(callback) { // For each chain this.container.forEach(e
วิธีการที่ชัดเจนค่อนข้างตรงไปตรงมา เราสามารถกำหนดตัวแปรคอนเทนเนอร์ใหม่ให้กับออบเจกต์ใหม่และชุดก็จะว่างเปล่า สามารถดำเนินการได้ดังนี้ - ตัวอย่าง clear() { this.container = {}; } คุณสามารถทดสอบได้โดยใช้ − ตัวอย่าง const testSet = new MySet(); testSet.add(1); testSet.add(2); testSet.add
ในชุดที่เราใช้งาน เราสามารถสร้าง a สำหรับแต่ละฟังก์ชันในคลาสของเรา และยอมรับการเรียกกลับที่เราสามารถเรียกใช้ในทุกองค์ประกอบ มาดูกันว่าเราจะใช้ฟังก์ชันดังกล่าวได้อย่างไร - ตัวอย่าง forEach(callback) { for (let prop in this.container) { callback(prop); }
การดำเนินการของการเพิ่ม 2 ชุดเรียกว่ายูเนี่ยน คุณต้องเพิ่มทุกอ็อบเจ็กต์จากชุดหนึ่งไปยังอีกชุดหนึ่งขณะตรวจสอบรายการซ้ำ เราสามารถใช้ 2 วิธีที่เราดำเนินการแล้วเพื่อใช้วิธีนี้ได้ เราจะใช้ฟังก์ชันนี้เป็นฟังก์ชันคงที่ เนื่องจากเราไม่ต้องการเปลี่ยนชุดที่มีอยู่ แต่สร้างและคืนค่าชุดใหม่ ก่อนอื่นเราต้องตรวจส
ความแตกต่างของ 2 ชุดหมายความว่าชุดที่กำลังจะลบออกควรนำองค์ประกอบทั้งหมดออกจากชุดที่กำลังจะลบออก ดังนั้นเราจึงสามารถทำซ้ำในชุดที่สองและลบองค์ประกอบทั้งหมดที่มีอยู่ในชุดนั้นออกจากชุดแรก ตัวอย่าง static difference(s1, s2) { if (!s1 instanceof MySet || !s2 instanceof MySet) {
นี่คือการใช้งานคลาส MySet อย่างสมบูรณ์ ตัวอย่าง class MySet { constructor() { this.container = {}; } display() { console.log(this.container); } has(val) { return this.cont
ในวิทยาการคอมพิวเตอร์ แอสโซซิเอทีฟอาเรย์ แผนที่ ตารางสัญลักษณ์ หรือพจนานุกรมเป็นประเภทข้อมูลนามธรรมที่ประกอบด้วยชุดของคู่ (คีย์ ค่า) โดยที่แต่ละคีย์ที่เป็นไปได้จะปรากฏที่ มากที่สุดครั้งหนึ่งในคอลเลกชัน โปรดทราบว่าพจนานุกรมเรียกอีกอย่างว่าแผนที่ ปัญหาพจนานุกรมเป็นปัญหาวิทยาการคอมพิวเตอร์คลาสสิก:งานข