งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

บทนำ. © S. Prasitjutrakul 200614/07/57 2 หัวข้อ นิยามนิยาม ตัวอย่างการใช้งานตัวอย่างการใช้งาน วัตถุประสงค์ของการศึกษาโครงสร้างข้อมูลวัตถุประสงค์ของการศึกษาโครงสร้างข้อมูล.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "บทนำ. © S. Prasitjutrakul 200614/07/57 2 หัวข้อ นิยามนิยาม ตัวอย่างการใช้งานตัวอย่างการใช้งาน วัตถุประสงค์ของการศึกษาโครงสร้างข้อมูลวัตถุประสงค์ของการศึกษาโครงสร้างข้อมูล."— ใบสำเนางานนำเสนอ:

1 บทนำ

2 © S. Prasitjutrakul /07/57 2 หัวข้อ นิยามนิยาม ตัวอย่างการใช้งานตัวอย่างการใช้งาน วัตถุประสงค์ของการศึกษาโครงสร้างข้อมูลวัตถุประสงค์ของการศึกษาโครงสร้างข้อมูล ตัวอย่างประสิทธิภาพเชิงเวลาการทำงานตัวอย่างประสิทธิภาพเชิงเวลาการทำงาน

3 © S. Prasitjutrakul /07/57 3 โครงสร้างข้อมูลคืออะไร วิธีการจัดเก็บและจัดการข้อมูลให้วิธีการจัดเก็บและจัดการข้อมูลให้ –ตรงตามความต้องการ –ทำงานรวดเร็ว –ประหยัดเนื้อที่ –เข้าใจง่าย จะเขียนโปรแกรมจัดเก็บและจัดการอย่างไร ?

4 © S. Prasitjutrakul /07/57 4 การจำลองวงจรตรรก Logic Design Tools

5 © S. Prasitjutrakul /07/57 5 การออกแบบวงจรรวม ทรานซิสเตอร์ 55 ล้านตัว กับสายสัญญาณเชื่อมต่อ อีกจำนวนมาก VLSI Design

6 © S. Prasitjutrakul /07/57 6 เกมคอมพิวเตอร์ Games

7 © S. Prasitjutrakul /07/57 7 การออกแบบทางวิศวกรรม CAD Tools

8 © S. Prasitjutrakul /07/57 8 และอื่น ๆ Google เก็บเอกสารอย่างไร ทำให้ค้นได้รวดเร็วGoogle เก็บเอกสารอย่างไร ทำให้ค้นได้รวดเร็ว jvm เก็บออปเจกต์ต่าง ๆ คลาสต่าง ๆ ตัวแปรต่าง ๆ thread ต่าง ๆ ไว้อย่างไรjvm เก็บออปเจกต์ต่าง ๆ คลาสต่าง ๆ ตัวแปรต่าง ๆ thread ต่าง ๆ ไว้อย่างไร Word processor เก็บตัวอักษร คำ ข้อความ ย่อหน้า สูตร รูป และอื่น ๆ ในเอกสารภายในหน่วยความจำ อย่างไร ขณะที่เรากำลังใช้งานWord processor เก็บตัวอักษร คำ ข้อความ ย่อหน้า สูตร รูป และอื่น ๆ ในเอกสารภายในหน่วยความจำ อย่างไร ขณะที่เรากำลังใช้งาน ล้วนเป็นปัญหาที่เกี่ยวกับ โครงสร้างข้อมูล

9 © S. Prasitjutrakul /07/57 9 ข้อมูลต่าง ๆ บางชนิด ตัวภาษามีให้แล้ว (primitive)บางชนิด ตัวภาษามีให้แล้ว (primitive) –int, double, char, boolean,... บางชนิดคลังคำสั่งของระบบมีให้ใช้ (class)บางชนิดคลังคำสั่งของระบบมีให้ใช้ (class) –String, Color, BigDecimal, ArrayList, HashMap,... และมีอีกมากมายที่ต้องออกแบบและสร้างเองและมีอีกมากมายที่ต้องออกแบบและสร้างเอง

10 © S. Prasitjutrakul /07/57 10 ที่เก็บข้อมูลแบบพื้นฐาน : Collection เก็บข้อมูลไม่มีอันดับ ซ้ำได้เก็บข้อมูลไม่มีอันดับ ซ้ำได้ ACBAA

11 © S. Prasitjutrakul /07/57 11 ที่เก็บข้อมูลแบบพื้นฐาน : Set เก็บข้อมูลไม่มีอันดับ ไม่ให้ซ้ำเก็บข้อมูลไม่มีอันดับ ไม่ให้ซ้ำ ACBAA

12 © S. Prasitjutrakul /07/57 12 ที่เก็บข้อมูลแบบพื้นฐาน : List เก็บข้อมูลเรียงแบบมีอันดับ ซ้ำได้เก็บข้อมูลเรียงแบบมีอันดับ ซ้ำได้ ACBAA

13 © S. Prasitjutrakul /07/57 13 ที่เก็บข้อมูลแบบพื้นฐาน : Queue ข้อมูล เข้าก่อน ออกก่อน (FIFO - First-In First-Out)ข้อมูล เข้าก่อน ออกก่อน (FIFO - First-In First-Out) ACBAX

14 © S. Prasitjutrakul /07/57 14 ที่เก็บข้อมูลแบบพื้นฐาน : Stack ข้อมูล เข้าหลัง ออกก่อน (LIFO - Last-In First-Out)ข้อมูล เข้าหลัง ออกก่อน (LIFO - Last-In First-Out) ACBAX

15 © S. Prasitjutrakul /07/57 15 วิธีสร้างที่เก็บข้อมูล สร้างด้วยอาเรย์สร้างด้วยอาเรย์ สร้างด้วยการโยงสร้างด้วยการโยง สร้างด้วยต้นไม้สร้างด้วยต้นไม้ สร้างด้วยตารางสร้างด้วยตาราง อื่น ๆอื่น ๆ + 3  a b

16 © S. Prasitjutrakul /07/57 16 วัตถุประสงค์ เลือกให้เป็นใช้ให้เป็นสร้างให้เป็น

17 © S. Prasitjutrakul /07/57 17 เลือกให้เป็น List Set Collection Stack Queue Map PriorityQueue ArrayList LinkedList TreeSet HashSet TreeMap HashMap LinkedHashMap

18 © S. Prasitjutrakul /07/57 18 ใช้ให้เป็น public static PuzzleBoard solve(PuzzleBoard b) { Set set = new ArraySet(); Queue queue = new ArrayQueue(); queue.enqueue(b); set.add(b); while ( !queue.isEmpty() ) { b = queue.dequeue(); for (int d = 0; d < 4; d++) { PuzzleBoard b2 = b.moveBlank(d); if (b2 != null) { if ( b2.isAnswer() ) return b2; if (! set.contains(b2) ) { queue.enqueue(b2); set.add(b2); } return null; } Set set = new ArraySet(); set.add(b); set.contains(b2) Queue queue = new ArrayQueue(); queue.enqueue(b); queue.isEmpty() queue.dequeue();

19 © S. Prasitjutrakul /07/57 19 ใช้ให้เป็น

20 © S. Prasitjutrakul /07/57 20 สร้างให้เป็น อยากได้ Collection ขอสร้าง collection ด้วยอาเรย์ size 3 elementData "" "" "" นัท คิด วิน public class ArrayCollection implements Collection { private Object[] elementData; private int size; public ArrayCollection(int c) { elementData = new Object[c]; size = 0; } public void add(Object e) { elementData[size++] = e; } public boolean size() { return size; } public int isEmpty() { return size == 0; }... ออกแบบโครงสร้าง พัฒนา โปรแกรม

21 © S. Prasitjutrakul /07/57 21 โครงสร้างข้อมูลที่ดี ให้บริการตามที่ต้องการให้บริการตามที่ต้องการ ใช้ง่ายใช้ง่าย กินเนื้อที่น้อยกินเนื้อที่น้อย ทำงานได้อย่างรวดเร็วทำงานได้อย่างรวดเร็ว

22 © S. Prasitjutrakul /07/57 22 ตัวอย่าง : 15-puzzle

23 © S. Prasitjutrakul /07/57 23 เลื่อนช่องว่างเพื่อผลิตตาราง ขึ้น ลง ซ้าย ขวา ขึ้น ลง ซ้าย ขวา

24 © S. Prasitjutrakul /07/57 24 พบคำตอบ พบวิธีเลื่อน ขึ้น ลง ขวา ซ้าย ขึ้น ลง ซ้าย ขวา ขึ้น ซ้าย ขวา

25 © S. Prasitjutrakul /07/57 25 ใช้ Queue เก็บตาราง

26 © S. Prasitjutrakul /07/ puzzle : ส่วนของโปรแกรม public static PuzzleBoard solve(PuzzleBoard b) { Queue queue = new ArrayQueue(); queue.enqueue(b); while ( !queue.isEmpty() ) { b = queue.dequeue(); for (int d = 0; d < 4; d++) { PuzzleBoard b2 = b.moveBlank(d); if (b2 != null) { if ( b2.isAnswer() ) return b2; queue.enqueue(b2); } } } return null; } ใช้ queue เก็บตารางที่ผลิตใหม่

27 © S. Prasitjutrakul /07/ puzzle : ตารางที่ผลิตอาจซ้ำกัน ขึ้น ขวา ซ้าย ขึ้น ลง ซ้าย ขวา ซ้าย ขวา ขึ้น ลง

28 © S. Prasitjutrakul /07/ puzzle : ส่วนของโปรแกรม public static PuzzleBoard solve(PuzzleBoard b) { Queue queue = new ArrayQueue(); queue.enqueue(b); while ( !queue.isEmpty() ) { b = queue.dequeue(); for (int d = 0; d < 4; d++) { PuzzleBoard b2 = b.moveBlank(d); if (b2 != null) { if ( b2.isAnswer() ) return b2; queue.enqueue(b2); } return null; } Set set = new ArraySet(); set.add(b); if ( ! set.contains(b2) ) { } ใช้ queue เก็บตารางที่ผลิตใหม่ ใช้ set เพื่อตรวจสอบความซ้ำซ้อน

29 © S. Prasitjutrakul /07/57 29 สร้าง Set ได้หลายแบบ public static PuzzleBoard solve(PuzzleBoard b) { Set set = new ArraySet(); Queue queue = new ArrayQueue(); queue.enqueue(b); set.add(b); while ( !queue.isEmpty() ) { b = queue.dequeue(); for (int d = 0; d < 4; d++) { PuzzleBoard b2 = b.moveBlank(d); if (b2 != null) { if ( b2.isAnswer() ) return b2; if ( ! set.contains(b2) ) { queue.enqueue(b2); set.add(b2); } return null; } Set set = new ArraySet();Set set = new BSTSet();Set set = new AVLSet();Set set = new HashSet();

30 © S. Prasitjutrakul /07/ puzzle : ผลการทดลอง ตาราง เริ่มต้น จำนวนตาราง ที่ผลิต เวลาการทำงาน (วินาที) ArraySetBSTSetAVLSetHashSet แบบที่ 1 แบบที่ 2 แบบที่

31 © S. Prasitjutrakul /07/57 31 สรุป ศึกษาวิธีการจัดเก็บและการจัดการข้อมูลศึกษาวิธีการจัดเก็บและการจัดการข้อมูล –ตรงตามความต้องการ –ทำงานรวดเร็ว –ประหยัดเนื้อที่ –เข้าใจง่าย เราต้องเราต้อง –เลือกให้เป็น –ใช้ให้เป็น –สร้างให้เป็น


ดาวน์โหลด ppt บทนำ. © S. Prasitjutrakul 200614/07/57 2 หัวข้อ นิยามนิยาม ตัวอย่างการใช้งานตัวอย่างการใช้งาน วัตถุประสงค์ของการศึกษาโครงสร้างข้อมูลวัตถุประสงค์ของการศึกษาโครงสร้างข้อมูล.

งานนำเสนอที่คล้ายกัน


Ads by Google