คำถามติดแท็ก data-structures

คำถามเกี่ยวกับการจัดเก็บอย่างมีประสิทธิภาพและการแสดงข้อมูลภายในแอปพลิเคชันซอฟต์แวร์

6
คุณต้องการแนะนำต้นไม้ไบนารีที่ปรับสมดุลตัวเองแบบใด
ฉันเรียนรู้ Haskell และออกกำลังกายฉันกำลังสร้างต้นไม้ไบนารี ต้องสร้างต้นไม้ไบนารีขึ้นมาเป็นประจำฉันต้องการที่จะปรับมันให้สมดุลกัน ดังนั้น: ข้อใดมีประสิทธิภาพมากที่สุด สิ่งที่ง่ายที่สุดที่จะใช้? ใช้บ่อยที่สุด? แต่อะไรที่คุณแนะนำ? ฉันคิดว่าสิ่งนี้เป็นของที่นี่เพราะเปิดให้มีการอภิปราย

4
เหตุใดคลาสข้อมูลจึงถูกพิจารณาว่าเป็นกลิ่นรหัส
นี้บทความอ้างว่าชั้นข้อมูลเป็น "กลิ่นรหัส" เหตุผล: มันเป็นเรื่องปกติเมื่อคลาสที่สร้างขึ้นใหม่มีฟิลด์สาธารณะเพียงไม่กี่ฟิลด์เท่านั้น แต่พลังที่แท้จริงของวัตถุคือพวกเขาสามารถมีประเภทพฤติกรรมหรือการดำเนินการกับข้อมูลของพวกเขา เหตุใดวัตถุจึงมีข้อมูลเพียงอย่างเดียว หากความรับผิดชอบหลักของชั้นเรียนคือการแสดงข้อมูลจะไม่เพิ่มวิธีการที่ใช้กับข้อมูลทำลายหลักการความรับผิดชอบเดี่ยวหรือไม่?

9
polymorphism ใช้ในโลกแห่งความเป็นจริงอย่างไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดเมื่อปีที่แล้ว ฉันพยายามที่จะเข้าใจว่า Polymorphism ใช้ในโครงการชีวิตจริง แต่ฉันสามารถหาตัวอย่างคลาสสิก (หรือบางอย่างที่คล้ายกัน) ของการมีAnimalคลาสผู้ปกครองด้วยวิธีการspeak()และชั้นเรียนเด็กจำนวนมากที่แทนที่วิธีนี้และตอนนี้ คุณสามารถเรียกใช้เมธอดspeak()บนอ็อบเจ็กต์ลูกใด ๆ ตัวอย่างเช่น: Animal animal; animal = dog; animal.speak(); animal = cat; animal.speak();

4
ใช้โครงสร้างข้อมูลถาวรในภาษาที่ไม่สามารถใช้งานได้
ภาษาที่ใช้งานได้จริงหรือใกล้เคียงกับการทำงานล้วนได้รับประโยชน์จากโครงสร้างข้อมูลถาวรเนื่องจากมีความไม่เปลี่ยนรูปแบบและเหมาะสมกับรูปแบบการเขียนโปรแกรมเชิงหน้าที่ แต่ในบางครั้งเราจะเห็นไลบรารีของโครงสร้างข้อมูลถาวรสำหรับภาษา (ตามรัฐ, OOP) เช่น Java การอ้างสิทธิ์ที่มักได้ยินในความโปรดปรานของโครงสร้างข้อมูลแบบถาวรคือเนื่องจากพวกมันไม่เปลี่ยนรูปพวกมันจึงปลอดภัยต่อเธรด อย่างไรก็ตามเหตุผลที่โครงสร้างข้อมูลถาวรนั้นมีความปลอดภัยต่อเธรดคือหากเธรดหนึ่งต้องการ "เพิ่ม" องค์ประกอบให้กับคอลเลกชันถาวรการดำเนินการจะส่งกลับคอลเลกชันใหม่เช่นเดิม แต่มีองค์ประกอบที่เพิ่มเข้ามา เธรดอื่นจึงเห็นคอลเลกชันดั้งเดิม แน่นอนว่าคอลเล็กชั่นทั้งสองนี้มีสถานะภายในเป็นจำนวนมาก - นั่นคือสาเหตุที่โครงสร้างถาวรเหล่านี้มีประสิทธิภาพ แต่เนื่องจากเธรดที่แตกต่างกันเห็นสถานะของข้อมูลที่แตกต่างกันจึงดูเหมือนว่าโครงสร้างข้อมูลถาวรนั้นไม่เพียงพอที่จะจัดการกับสถานการณ์ที่เธรดหนึ่งทำการเปลี่ยนแปลงที่สามารถมองเห็นเธรดอื่นได้ สำหรับเรื่องนี้ดูเหมือนว่าเราจะต้องใช้อุปกรณ์เช่นอะตอมการอ้างอิงหน่วยความจำทรานแซคชันของซอฟต์แวร์หรือแม้กระทั่งการล็อคแบบคลาสสิกและกลไกการซิงโครไนซ์ ทำไมจึงเป็นไปไม่ได้ที่ PDSs จะกลายเป็นสิ่งที่มีประโยชน์ต่อ "ความปลอดภัยของเธรด" หรือไม่? มีตัวอย่างจริงที่ PDS ช่วยในการซิงโครไนซ์หรือแก้ไขปัญหาการทำงานพร้อมกันหรือไม่? หรือ PDS เป็นเพียงวิธีหนึ่งในการจัดหาอินเตอร์เฟสแบบไร้รัฐให้กับวัตถุเพื่อสนับสนุนสไตล์การเขียนโปรแกรมที่ใช้งานได้หรือไม่

9
โครงสร้างข้อมูลสำหรับการเข้าถึงหน่วยวัด
TL; DR - ฉันพยายามออกแบบโครงสร้างข้อมูลที่ดีที่สุดเพื่อกำหนดหน่วยภายในหน่วยการวัด Unit of measureเป็นหลักvalue(หรือปริมาณ) unitที่เกี่ยวข้องกับ หน่วย SIมีเจ็ดฐานหรือขนาด กล่าวคือความยาวมวลเวลากระแสไฟฟ้าอุณหภูมิปริมาณสาร (โมล) และความเข้มการส่องสว่าง สิ่งนี้จะตรงไปตรงมามากพอ แต่มีหน่วยที่ได้รับมาจำนวนมากรวมทั้งอัตราที่เราใช้บ่อย ตัวอย่างรวมหน่วยจะเป็นนิวตัน: และอัตราตัวอย่างจะเป็นkg * m / s^2tons / hr เรามีแอปพลิเคชั่นที่ต้องอาศัยหน่วยงานโดยนัย เราจะฝังหน่วยภายในชื่อตัวแปรหรือคอลัมน์ แต่สิ่งนี้จะสร้างปัญหาเมื่อเราจำเป็นต้องระบุหน่วยการวัดด้วยหน่วยที่แตกต่างกัน ใช่เราสามารถแปลงค่าที่อินพุทและจอแสดงผล แต่สิ่งนี้จะสร้างรหัสค่าใช้จ่ายจำนวนมากที่เราต้องการห่อหุ้มในคลาสของตัวเอง มีโซลูชั่นจำนวนมากเกี่ยวกับ codeplex และสภาพแวดล้อมการทำงานร่วมกันอื่น ๆ การอนุญาตให้ใช้สิทธิ์สำหรับโครงการนั้นเป็นที่ยอมรับ แต่โดยทั่วไปแล้วโครงการมักจะมีน้ำหนักเบาหรือหนักเกินไป เรากำลังไล่ตามยูนิคอร์นของเรา "ถูกต้อง" เป็นการดีที่ฉันสามารถกำหนดหน่วยวัดใหม่โดยใช้สิ่งนี้: UOM myUom1 = UOM ใหม่ (10, โวลต์); UOM myUom2 = UOM ใหม่ (43.2, …

2
การอ้างอิงแบบบัญญัติในโครงสร้างข้อมูลความน่าจะเป็นคืออะไร?
ฉันได้ยินเกี่ยวกับโครงสร้างข้อมูลที่น่าจะเป็นเช่นข้ามรายการและตัวกรองบลูมซึ่งมีประโยชน์อย่างมากและฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับโครงสร้างเหล่านั้นโดยทั่วไป มีการอ้างอิงตามมาตรฐานในเรื่องของระดับ Cormen และคณะหรือไม่?

8
มีปัญหากับโครงสร้างข้อมูลทั่วไปสำหรับผู้เริ่มต้นหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันกำลังเรียนหลักสูตรที่สองทาง Java เรากำลังเข้าสู่โครงสร้างข้อมูล ฉันได้ทำการมอบหมายให้กับรายการที่เชื่อมโยงและตอนนี้สแต็ก ฉันมีปัญหากับรายการที่เชื่อมโยง สแต็คทำให้ฉันมีปัญหาเล็กน้อย แต่ก็ง่ายขึ้นมาก ฉันควรกังวลเกี่ยวกับช่วงเวลาที่ยากลำบากกับอัลกอริทึมและโครงสร้างข้อมูลเหล่านี้หรือไม่? ฉันแค่รู้สึกว่าฉันไม่เข้าใจจริงๆ

11
โครงสร้างข้อมูลที่ซับซ้อนที่สุดที่คุณใช้ในสถานการณ์จริงคืออะไร? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เชื้อโรคสำหรับคำถามนี้เกิดขึ้นจากการสนทนาที่ฉันมีกับนักพัฒนาเพื่อนสองคนจากอุตสาหกรรม ปรากฎว่าในหลาย ๆ ที่ผู้จัดการโครงการมีความระมัดระวังเกี่ยวกับโครงสร้างข้อมูลที่ซับซ้อนและโดยทั่วไปยืนยันในสิ่งที่มีอยู่นอกกรอบจากไลบรารี / แพ็คเกจมาตรฐาน แนวคิดทั่วไปดูเหมือนจะเป็นเหมือนการใช้การรวมกันของสิ่งที่มีอยู่แล้วยกเว้นว่าประสิทธิภาพการทำงานจะถูกขัดขวางอย่างจริงจัง สิ่งนี้ช่วยให้การรักษารหัสพื้นฐานง่ายขึ้นซึ่งไม่ใช่การทูตหมายถึง "เรามีการขัดสีสูงและการจ้างงานใหม่ที่เราจ้างอาจไม่ดีเท่านี้" ดังนั้นจึงไม่มีการคัดกรองบลูมหรือข้ามรายการหรือสเปรย์ต้นไม้สำหรับคุณ CS ขยะ ดังนั้นนี่คือคำถาม (อีกครั้ง): โครงสร้างข้อมูลที่ซับซ้อนที่สุดที่คุณทำหรือใช้ในสำนักงานคืออะไร ช่วยให้เข้าใจว่าซอฟต์แวร์โลกแห่งความจริงที่ดี / ซับซ้อนเพียงใด

4
Bill Gosper หมายความว่าอย่างไรโดยพูดว่าโครงสร้างข้อมูลเป็นเพียงภาษาโปรแกรมที่โง่? [ปิด]
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว มีใบเสนอราคาโดยRalph William Gosper, Jrที่พูดว่า: โครงสร้างข้อมูลเป็นเพียงภาษาการเขียนโปรแกรมที่โง่ สิ่งนี้หมายความว่าอย่างไร อนิจจาทั้งหมดที่ฉันสามารถพบได้ใน Google เกี่ยวกับมันคือการคัดลอก / วางอย่างไม่ลดละของราคาเสนอโดยไม่มีบริบทใด ๆ

2
ฟิลเตอร์บลูมนั้นเร็วกว่าแฮชหรือไม่?
ตัวกรอง Bloom ดูดีมากเมื่อคุณพิจารณาว่าคุณสามารถตรวจสอบว่า Int อยู่ในชุดที่มีความมั่นใจ 99% ในเวลาคงที่หรือไม่ แต่สามารถแฮชได้โดยมีความแตกต่างเพียงอย่างเดียวคือส่วนใหญ่เวลาที่คุณเข้าถึงหน่วยความจำเพียงครั้งเดียว ด้วยตัวกรองบานคุณต้องเข้าถึงพวกเขา ~ 7 ครั้งต่อคำขอในสถานที่ห่างไกลอย่างสมบูรณ์ดังนั้นคุณจะพลาดแคชหลายครั้งต่อคำขอ ฉันพลาดอะไรไปรึเปล่า?

2
จะแสดงชุดใน JSON อย่างไร
JSON สนับสนุนโครงสร้างข้อมูลต่อไปนี้ (เทียบเท่า Java): Scalar, Array / List และ Map A Setไม่รองรับ out-of-the-box ใน JSON ฉันคิดหลายวิธีในการเป็นตัวแทนของชุดใน JSON: [1] - เป็นรายการ อย่างไรก็ตามรายการมีลำดับของตัวเองดังนั้นสองรายการต่อไปนี้["a", "b"]และ["b", "a"]ไม่เท่ากับรายการ แต่พวกเขาควรจะเท่ากับชุด [2] - เป็นแผนที่ ใช้ชุดคีย์ของแผนที่และละเว้นค่า แต่อีกครั้งโดยใช้การเปรียบเทียบแบบมาตรฐานทั้งสองแบบไม่เหมือนกับแผนที่: {"a": "foo", "b": "bar"}, {"a": null, "b": null} [3] - เป็นแผนที่ที่มีค่าพิเศษ ใช้สเกลาร์พูด0หรือnullบังคับให้มันเป็นค่าของทุกคีย์ในแผนที่: {"a": 0, "b": 0} ด้วยวิธีนี้ภายใต้เครื่องมือเปรียบเทียบมาตรฐานวัตถุจะเท่ากันแม้ว่าจะเปลี่ยนการเรียงลำดับคีย์ อย่างไรก็ตามเทคนิคนี้สร้างมลภาวะเอกสาร JSON ด้วยข้อมูลที่ไม่เกี่ยวข้อง [4] …

2
B-Trees และโครงสร้างข้อมูลอื่น ๆ จะล้าสมัยเมื่อมีการถือกำเนิดของ Solid State Drive หรือไม่?
ปัจจุบันแอพพลิเคชั่นฐานข้อมูลจำนวนมาก (อาจจะมากที่สุด) ใช้ B-Trees และรูปแบบที่หลากหลายในการจัดเก็บข้อมูลเนื่องจากโครงสร้างข้อมูลนี้ปรับการดำเนินการอ่านเขียนและค้นหาบนฮาร์ดดิสก์ให้เหมาะสม (และการดำเนินการเหล่านี้จะมีบทบาทสำคัญในประสิทธิภาพโดยรวมของ ฐานข้อมูล) Solid State Drives (SSDs) ควรจะแทนที่ฮาร์ดดิสก์แบบดั้งเดิม (HDDs) อย่างสมบูรณ์หรือไม่เราสามารถพูดได้ว่า B-Trees และรูปแบบต่างๆจะล้าสมัยทำให้มีที่ว่างสำหรับโครงสร้างข้อมูลที่มีประสิทธิภาพมากขึ้นในหน่วยความจำโดยตรง ถ้าเป็นเช่นนั้นโครงสร้างเหล่านั้นจะเป็นอย่างไร (เช่นตารางแฮชต้นไม้ AVL)

3
ฟิลเตอร์บลูมที่ปรับขนาดได้ทำงานอย่างไร
ฉันอ่านค่าตัวกรองบลูมที่ปรับขนาดได้และไม่สามารถเข้าใจได้ว่าแต่ละครั้งที่ตัวกรองบลูมที่เป็นองค์ประกอบเติมเต็มตัวกรองบลูมใหม่ที่มีขนาดใหญ่ขึ้นจะถูกเพิ่มเข้าไป องค์ประกอบที่สนับสนุนชุดบิตในตัวกรองที่สร้างขึ้นครั้งแรกไม่สามารถค้นหาว่ามีอยู่หรือไม่ บางทีฉันอาจเข้าใจผิดในเรื่องนี้? ฉันเข้าใจตัวกรองบลูมพื้นฐาน อย่างไรก็ตามฉันไม่สามารถคลุมศีรษะด้วยฟิลเตอร์บลูมแบบไดนามิก

1
รายการข้ามทำงานอย่างไร
สำหรับการบ้านฉันต้องเข้าใจว่าการข้ามรายการทำงานอย่างไร ฉันได้เขียนโปรแกรมมานานกว่า 2 ปีแล้ว (ฉันรู้ว่ามันไม่ได้อยู่ในความเป็นจริงมานานแล้ว) และฉันไม่เคยได้ยินชื่อข้ามเลย ฉันดูคำแนะนำทั้งหมดที่ฉันสามารถหาได้และฉันก็ยังแทบจะไม่เข้าใจว่ามันทำงานยังไง ฉันค้นหาการตรวจทานโค้ดเพื่อดูตัวอย่างการใช้งานและพบเพียงหนึ่งบทวิจารณ์เท่านั้น และยังไม่ได้ใช้งานอย่างสมบูรณ์ ฉันดูตัวอย่างการใช้งานที่จัดทำโดยหลักสูตรและมันโหดร้ายอย่างยิ่ง ระหว่างการขาดวิธีการที่เหมาะสมและชื่อตัวแปรตัวอักษรเดี่ยวฉันไม่รู้เลยว่ามันทำงานอย่างไร รายการข้ามทำงานอย่างไร จำเป็นต้องมีความรู้เกี่ยวกับรายการข้ามหรือไม่ที่จะเข้าใจโครงสร้างข้อมูลขั้นสูงหรือไม่

5
การจัดเก็บข้อมูลเมตาในข้อความในโครงสร้างข้อมูลที่ไม่ต่อเนื่อง
ฉันกำลังพัฒนาโปรแกรมที่จะต้องมีการจัดเก็บแบบอินไลน์ , intextเมตาดาต้า สิ่งที่ฉันหมายถึงคือสิ่งต่อไปนี้สมมติว่าเรามีข้อความยาวและเราต้องการเก็บข้อมูลเมตาบางส่วนที่เชื่อมต่อกับคำเฉพาะหรือประโยคของข้อความ อะไรจะเป็นวิธีที่ดีที่สุดในการจัดเก็บข้อมูลนี้ ความคิดแรกของฉันคือการรวมไว้ในข้อความMarkdownไวยากรณ์บางอย่างที่จะถูกแยกวิเคราะห์ในการดึง บางสิ่งที่มีลักษณะเช่นนี้: Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam __nonummy nibh__[@note this sounds really funny latin] euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. นี่จะแนะนำปัญหาสองประการที่ฉันสามารถนึกได้: สิ่งหนึ่งที่ค่อนข้างเล็กคือถ้าไวยากรณ์ดังกล่าวเกิดขึ้นโดยบังเอิญในข้อความดังกล่าวมันสามารถยุ่งกับการแยกวิเคราะห์ สิ่งที่สำคัญที่สุดคือสิ่งนี้จะไม่เก็บข้อมูลเมตานี้แยกจากข้อความ ฉันต้องการให้มีโครงสร้างข้อมูลแบบแยกเพื่อเก็บข้อมูลนี้เช่นตารางฐานข้อมูลที่แตกต่างกันซึ่งข้อมูลเมตาเหล่านี้ถูกเก็บไว้เพื่อให้ฉันสามารถใช้พวกเขาในรูปแบบที่ไม่ต่อเนื่อง: การสืบค้นสถิติการเรียงลำดับและอื่น ๆ แก้ไข:เนื่องจากผู้ตอบลบคำตอบของเขาฉันคิดว่ามันอาจเป็นการดีที่จะเพิ่มข้อเสนอแนะของเขาที่นี่เนื่องจากเป็นข้อเสนอแนะที่ใช้การได้ซึ่งขยายได้ในแนวคิดแรกนี้ โปสเตอร์แนะนำให้ใช้ไวยากรณ์ที่คล้ายกัน แต่จะเชื่อมโยงข้อมูลเมตาไปPRIMARY KEYของmetadataตารางฐานข้อมูล สิ่งที่มีลักษณะเช่นนี้: Lorem ipsum dolor sit amet, consectetuer …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.