รายละเอียด

โครงสร้างข้อมูลและอัลกอริธึม / Data Structure and Algorithm

  • 17 สัปดาห์
  • จำนวนนักศึกษา 0 คน
  • อาจารย์ผู้สอน 1 คน

ข้อมูลรายวิชา

  • รหัสรายวิชา : BSCCT503
  • ชื่อรายวิชา(TH) : โครงสร้างข้อมูลและอัลกอริธึม
  • ชื่อรายวิชา (EN) : Data Structure and Algorithm
  • เทอม / ปีการศึกษา : 1/2566

รายละเอียด

ศึกษาและปฏิบัติเกี่ยวกับการแนะนำ แนวคิดพื้นฐานของโครงสร้างข้อมูลและขั้นตอนวิธี รวมถึงการเรียกซ้ำ โครงสร้างข้อมูลแบบต่าง ๆ ทั้งที่เป็นเชิงเส้นและไม่เป็นเชิงเส้น โครงสร้างข้อมูลพื้นฐาน ได้แก่  สแตก คิว ลิสต์ โครงสร้างแบบต้นไม้และกราฟ อัลกอริทึมพื้นฐานและการวิเคราะห์ขั้นตอนวิธี  เช่น การสืบค้นข้อมูล และการเรียงข้อมูล

Study and practice of concepts of data structure and algorithms, recursion, linear and non-linear structure, basic data structure, such as stack, queue, list, tree and graph structures, basic algorithms and analysis, such as searching and sorting.

รายวิชา - โครงสร้างข้อมูลและอัลกอริธึม

- อธิบายภาพรวมของการเรียนวิชานี้ เกณฑ์คะแนน และมอบหมายงานกลุ่ม
1. แนวคิดเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
1.1 แนวคิดเกี่ยวกับโครงสร้างข้อมูล
1.1.1 ความหมายของโครงสร้างข้อมูล
1.1.2 การแทนที่ข้อมูลในหน่วยความจำ
1) การแทนที่ข้อมูลในหน่วยความจำแบบสแตติก
2) การแทนที่ข้อมูลในหน่วยความจำแบบไดนามิก
1.1.3 ประเภทของโครงสร้างข้อมูล
1) โครงสร้างข้อมูลพื้นฐาน
2) โครงสร้างข้อมูลอย่างง่าย
3) โครงสร้างข้อมูลแบบซับซ้อน
3.1) โครงสร้างข้อมูลแบบเชิงเส้น
3.2) โครงสร้างข้อมูลแบบไม่เป็นเชิงเส้น
3.2.1) โครงสร้างข้อมูลแบบไม่เป็นเชิงเส้นที่ไม่มีลำดับของข้อมูล
3.2.2) โครงสร้างข้อมูลแบบไม่เป็นเชิงเส้นที่มีลำดับของข้อมูล
1.2 แนวคิดเกี่ยวกับอัลกอริทึม
1.2.1 ความหมายของอัลกอริทึม
1.2.2 การวิเคราะห์และกำหนดรายละเอียดของปัญหา
1.2.3 ตัวอย่างประเภทของอัลกอริทึม
1.3 ประโยชน์ของโครงสร้างข้อมูลและอัลกอริทึม
- แบบฝึกหัดท้ายบทเรียนที่ 1
- ปฎิบัติตามใบงานที่ 1 เตรียมเครื่องมือ และเปรียบเทียบข้อดี-ข้อเสียของโปรแกรมที่ใช้โครงสร้างข้อมูลกับไม่ใช้โครงสร้างข้อมูลในการจัดการปัญหา


กิจกรรม : - ชี้แจงลักษณะรายวิชา แผนการสอน วิธีวัดผลและประเมินผล รวมทั้งแนะนำเอกสารประกอบการสอน
- สร้างข้อตกลงร่วมกันในการจัดการเรียนการสอน
- มอบหมายงานกลุ่มให้ไปศึกษาค้นคว้าเพิ่มเติม
- เปิดโอกาสให้นักศึกษาซักถาม
- บรรยายประกอบสื่อนำเสนอ
- ซักถามความเข้าใจ
- แบบฝึกหัดท้ายบทเรียน

2. อัลกอริทึม (Algorithm)
2.1 คุณสมบัติของอัลกอริทึมที่ดี
2.2 การเขียนอัลกอริทึม
2.2.1 การเขียนอัลกอริทึมด้วยคำสั่งเทียม
1) ลักษณะของคำสั่งเทียม
2) การเขียนคำสั่งเทียมในส่วน Algorithm Header
3) โครงสร้างคำสั่งเทียมพื้นฐานที่ใช้ในการเขียนโปรแกรม
3.1) โครงสร้างแบบลำดับ
3.2) โครงสร้างแบบเลือก
3.3) โครงสร้างแบบทำซ้ำหรือวนรอบ
4) ประโยชน์ของการเขียนชุดคำสั่งเทียม
5) วิธีการเขียนชุดคำสั่งเทียม
2.2.2 การเขียนอัลกอริทึมด้วยผังงานโปรแกรม
1) ประโยชน์ของผังงาน
2) ข้อจำกัดของการเขียนผังงาน
3) ชนิดของผังงาน
3.1) ผังงานระบบ
3.2) ผังงานโปรแกรม
4) สัญลักษณ์ในการเขียนผังงาน
5) วิธีการเขียนผังงานที่ดี
6) โครงสร้างผังงานพื้นฐานที่ใช้ในการเขียนโปรแกรม
6.1) โครงสร้างแบบลำดับ
6.2) โครงสร้างแบบเลือก
6.3) โครงสร้างแบบทำซ้ำหรือวนรอบ
2.3 การใช้เซนทิเนลในอัลกอริทึม
- แบบฝึกหัดท้ายบทเรียนที่ 2 ตอนที่ 1
- ปฎิบัติตามใบงานที่ 2 ฝึกออกแบบและเขียนอัลกอริทึมด้วยคำสั่งเทียมและผังงาน


กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- ปฏิบัติการวิเคราะห์ปัญหาและพัฒนาอัลกอริทึม
- ซักถามความเข้าใจ
- แบบฝึกหัดท้าย
- บทเรียน

2.4 การวัดประสิทธิภาพของอัลกอริทึม
2.4.1 การวิเคราะห์หน่วยความจำที่ใช้ในการประมวลผล
2.4.2 การวิเคราะห์เวลาที่ใช้ในการประมวลผล
2.4.3 อัตราการเติบโตของอัลกอริทึม
1) อัตราการเติบโต Big-O
2) อัตราการเติบโต Big-Omega
3) อัตราการเติบโต Big-Theta
4) อัตราการเติบโต Little-o
5) อัตราการเติบโต Little-omega
2.4.4 การเปรียบเทียบอัตราการเติบโตของอัลกอริทึม
- แบบฝึกหัดท้ายบทเรียนที่ 2 ตอนที่ 2
- ปฎิบัติตามใบงานที่ 3 ทบทวนการเขียนโปรแกรมด้วยภาษาจาวา ตอนที่ 1

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- ซักถามความเข้าใจ
- แบบฝึกหัดท้ายบทเรียน

2.4.5 การนับตัวดำเนินการ
1) นับตัวดำเนินการแบบค่าคงที่
2) นับตัวดำเนินการแบบลูปลำดับ
3) นับตัวดำเนินการแบบลูปลอการิทมิก
4) นับตัวดำเนินการแบบลูปซ้อน
2.4.6 ฟังก์ชันอัตราการเจริญเติบโตตามการวัดประสิทธิภาพของอัลกอริทึม
2.4.7 ประเภทของการวิเคราะห์ประสิทธิภาพอัลกอริทึม
- แบบฝึกหัดท้ายบทเรียนที่ 2 ตอนที่ 3
- ปฎิบัติตามใบงานที่ 4 ทบทวนการเขียนโปรแกรมด้วยภาษาจาวา ตอนที่ 2



กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- ปฏิบัติการวัดประสิทธิภาพอัลกอริทึม
- ซักถามความเข้าใจ
- แบบฝึกหัดท้ายบทเรียน

3. โครงสร้างข้อมูลแบบอาร์เรย์ (Array)
3.1 แนะนำอาร์เรย์
3.1.1 คุณสมบัติของอาร์เรย์
3.1.2 ขอบเขตของอาร์เรย์
3.2 ประเภทของอาร์เรย์
3.2.1 ประเภทของอาร์เรย์ที่พิจารณาจากมิติของอาร์เรย์
3.2.2 ประเภทของอาร์เรย์ที่พิจารณาจากขนาดของอาร์เรย์
3.3 ตัวอย่างการใช้งานอาร์เรย์ในภาษาจาวา
3.4 การนำอาร์เรย์ไปประยุกต์ใช้งาน
3.5 การทดลองสร้างและใช้งานอาร์เรย์ด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียนที่ 3
- ปฎิบัติตามใบงานที่ 5 การทดลองสร้างและใช้งานอาร์เรย์ด้วยภาษาจาวา

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างการใช้อาร์เรย์
- ซักถามความเข้าใจ
- ฝึกปฏิบัติเขียนโปรแกรมการใช้อาร์เรย์
- แบบฝึกหัดท้ายบทเรียน

4. โครงสร้างข้อมูลแบบสแตก (Stack)
4.1 แนะนำสแตก
4.1.1 คุณสมบัติของสแตก
4.1.2 การแทนที่ข้อมูลของสแตก
4.2 การดำเนินการบนสแตก
4.2.1 การตรวจสอบสถานะของสแตก
4.2.2 การเพิ่มข้อมูลลงในสแตก (Push)
4.2.3 การนำข้อมูลออกจากสแตก (Pop)
4.3 ตัวอย่างการสร้างสแตกในภาษาจาวา
4.4 การนำสแตกไปประยุกต์ใช้งาน
4.5 การทดลองสร้างและใช้งานสแตกด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียนที่ 4
- ปฎิบัติตามใบงานที่ 6 การทดลองสร้างและใช้งานสแตกด้วยภาษาจาวา

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างสแตก
- ซักถามความเข้าใจ
- ฝึกปฏิบัติเขียนโปรแกรมการใช้สแตก
- แบบฝึกหัดท้ายบทเรียน

5. โครงสร้างข้อมูลแบบคิว (Queue)
5.1 แนะนำคิว
5.1.1 คุณสมบัติของคิว
5.1.2 การแทนที่ข้อมูลของคิว
5.2 ประเภทของคิว
5.2.1 คิวธรรมดา (Queue)
5.2.2 คิววงกลม (Circular Queue)
5.2.3 คิวลำดับความสำคัญ (Priority Queue)
5.3 การดำเนินการบนคิวธรรมดา
5.3.1 การตรวจสอบสถานะของคิว
5.3.2 การเพิ่มข้อมูลลงในคิว (Enqueue)
5.3.3 การนำข้อมูลออกจากคิว (Dequeue)
5.4 การดำเนินการบนคิววงกลม
5.4.1 การตรวจสอบสถานะของคิววงกลม
5.4.2 การเพิ่มข้อมูลลงในคิววงกลม
5.4.3 การนำข้อมูลออกจากคิววงกลม
5.5 ตัวอย่างการสร้างคิวในภาษาจาวา
5.6 การนำคิวไปประยุกต์ใช้งาน
5.7 การทดลองสร้างและใช้งานคิวด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียนที่ 5
- ปฎิบัติตามใบงานที่ 7 การทดลองสร้างและใช้งานคิวด้วยภาษาจาวา

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างคิว
- ซักถามความเข้าใจ
- ฝึกปฏิบัติเขียน โปรแกรมการใช้คิว
- แบบฝึกหัดท้ายบทเรียน

6. โครงสร้างข้อมูลแบบลิงค์ลิสต์ (Linked List)
6.1 แนะนำลิงค์ลิสต์
6.1.1 ที่มาของลิงค์ลิสต์
6.1.2 โครงสร้างของลิงค์ลิสต์
6.1.3 ความยืดหยุ่นของลิงค์ลิสต์
6.2 ประเภทของลิงค์ลิสต์
6.2.1 ลิงค์ลิสต์ทางเดียว (Singly Linked List)
6.2.2 ลิงค์ลิสต์สองทาง (Doubly Linked List)
6.2.3 ลิงค์ลิสต์วงกลม (Circular Linked List)
6.3 การดำเนินการบนลิงค์ลิสต์
6.3.1 การตรวจสอบสถานะของลิงค์ลิสต์
1) การตรวจสอบสถานะว่างของลิงค์ลิสต์
2) การตรวจสอบว่าในลิงค์ลิสต์มีข้อมูลเพียงตัว เดียว
6.3.2 การดำเนินการบนลิงค์ลิสต์ทางเดียว
1) การเพิ่มข้อมูลลงในลิงค์ลิสต์ทางเดียว (Insert)
2) การลบข้อมูลออกจากลิงค์ลิสต์ทางเดียว (Delete)
3) การค้นหาข้อมูลในลิงค์ลิสต์ทางเดียว (Search)
- แบบฝึกหัดท้ายบทเรียนที่ 6 ตอนที่ 1
- ปฎิบัติตามใบงานที่ 8 การทดลองดำเนินการบนลิงค์ลิสต์ทางเดียวด้วยการทำมือ

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างการใช้ลิงค์ลิสต์
- ซักถามความเข้าใจ
- ฝึกปฏิบัติเขียนลิสต์ทางเดียว ด้วยการทำมือ
- แบบฝึกหัดท้ายบทเรียน
- สอบปฏิบัติ*

สอบกลางภาค
กิจกรรม : - สอบภาคทฤษฎี

6.3.3 การดำเนินการบนลิงค์ลิสต์สองทาง
1) การเพิ่มข้อมูลลงในลิงค์ลิสต์สองทาง (Insert)
2) การลบข้อมูลออกจากลิงค์ลิสต์สองทาง (Delete)
3) การค้นหาข้อมูลในลิงค์ลิสต์สองทาง (Search)
6.4 ตัวอย่างการสร้างลิงค์ลิสต์อย่างง่ายในภาษาจาวา
6.5 การนำลิงค์ลิสต์ไปประยุกต์ใช้งาน
6.6 ความแตกต่างระหว่างอาร์เรย์กับลิงค์ลิสต์
6.7 การทดลองสร้างและใช้งานลิงค์ลิสต์ด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียนที่ 6 ตอนที่ 2
- ปฎิบัติตามใบงานที่ 9 การทดลองสร้างและใช้งานลิงค์ลิสต์ด้วยภาษาจาวา

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างการใช้ลิงค์ลิสต์
- ซักถามความเข้าใจ
- ฝึกปฏิบัติสร้างและใช้งานลิงค์ลิสต์ด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียน

7. โครงสร้างข้อมูลแบบทรี (Tree)
7.1 นิยามและคุณสมบัติของทรี
7.2 ประเภทของทรี
7.2.1 ทรีทั่วไป (General Tree)
7.2.2 ทรีทวิภาค (Binary Tree)
7.2.3 ทรีทวิภาคแบบสมบูรณ์ (Completed Binary Tree)
7.3 การเปลี่ยนทรีทั่วไปให้เป็นทรีทวิภาค
7.4 การแทนทรีทวิภาคในหน่วยความจำหลัก
7.4.1 การแทนทรีทวิภาคด้วยอาร์เรย์
7.4.2 การแทนทรีทวิภาคด้วยลิงค์ลิสต์
7.5 การท่องทรีทวิภาค (Traversal Binary Tree)
7.5.1 การท่องแบบแนวลึก (Depth-First Traversals)
7.5.2 การท่องแบบแนวกว้าง (Breadth-first Traversals)
7.6 การนำทรีไปประยุกต์ใช้งาน
7.6.1 การจัดเก็บข้อมูล
7.6.2 ทรีสำหรับนิพจน์ทางคณิตศาสตร์ ( Expression Tree)
- แบบฝึกหัดท้ายบทเรียนที่ 7 ตอนที่ 1
- ปฎิบัติตามใบงานที่ 10 การทดลองดำเนินการกับทรีด้วยการทำมือ

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างทรี
- ซักถามความเข้าใจ
- ฝึกทดลองดำเนินการกับทรีด้วยการทำมือ
- แบบฝึกหัดท้ายบทเรียน

7.7 การดำเนินการบนทรี
7.7.1 การดำเนินการบนทรีทั่วไป
1) การแทรกโหนดลงในทรีทั่วไป
2) การลบโหนดออกจากทรีทั่วไป
7.7.2 การดำเนินการบนทรีทวิภาค
1) การแทรกโหนดลงในทรีทวิภาค
2) การลบโหนดออกจากทรีทวิภาค
7.8 ตัวอย่างการสร้างทรีอย่างง่ายในภาษาจาวา
7.9 การทดลองสร้างและใช้งานทรีด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียนที่ 7 ตอนที่ 2
- ปฎิบัติตามใบงานที่ 11 การทดลองสร้างและใช้งานทรีด้วยภาษาจาวา

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างทรี
- ซักถามความเข้าใจ
- ฝึกทดลองดำเนินการกับทรีด้วยการทำมือ
- แบบฝึกหัดท้ายบทเรียน

8. โครงสร้างข้อมูลแบบกราฟ (Graph)
8.1 นิยามและคำศัพท์ที่เกี่ยวข้องกับกราฟ
8.2 ความแตกต่างระหว่างกราฟกับต้นไม้
8.3 ประโยชน์ของกราฟ
8.4 ประเภทของกราฟ
8.4.1 ประเภทของกราฟพิจารณาจากทิศทาง
1) กราฟไม่มีทิศทาง (Undirected Graph)
2) กราฟมีทิศทาง (Directed Graph)
8.4.2 ประเภทของกราฟพิจารณาจากน้ำหนัก
1) กราฟไม่มีน้ำหนัก (Unweighted Graph)
2) กราฟมีน้ำหนัก (Weighted Graph)
8.5 กราฟสมบูรณ์ (Complete Graph)
8.6 การแทนที่กราฟในหน่วยความจำ Matrix
8.6.1 การแทนที่กราฟในหน่วยความจำด้วย Adjacency
8.6.2 การแทนที่กราฟในหน่วยความจำด้วย Adjacency Lists
- แบบฝึกหัดท้ายบทเรียนที่ 8 ตอนที่ 1
- ปฎิบัติตามใบงานที่ 12 ปฎิบัติการแทนที่กราฟในหน่วยความจำด้วยการทำมือ

กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างกราฟ
- ซักถามความเข้าใจ
- ฝึกปฎิบัติการแทนที่กราฟในหน่วยความจำด้วยการทำมือ
- แบบฝึกหัดท้ายบทเรียน

8.7 การท่องไปในกราฟ (Traversal)
8.7.1 การท่องแนวลึก (Depth-First Traversal)
8.7.2 การท่องแนวกว้าง (Breadth-First Traversal)
8.8 การนำกราฟไปประยุกต์ใช้งาน
8.8.1 ต้นไม้แผ่ทั่วที่น้อยที่สุด (Minimum Spanning Tree)
8.8.2 วิถีที่สั้นที่สุด (Shortest Path)
8.9 ตัวอย่างการสร้างกราฟอย่างง่ายในภาษาจาวา
8.10 การทดลองสร้างและใช้งานกราฟด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียนที่ 8 ตอนที่ 2
- ปฎิบัติตามใบงานที่ 13 การทดลองสร้างและใช้งานกราฟด้วยภาษาจาวา


กิจกรรม : - บรรยายประกอบสื่อนำเสนอ
- แสดงตัวอย่างกราฟ
- ซักถามความเข้าใจ
- ฝึกปฎิบัติสร้างและใช้งานกราฟด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียน

- ส่งเล่มรายงานและไฟล์นำเสนองานกลุ่ม
- นำเสนองานกลุ่ม
9. การจัดเรียงข้อมูล (Sorting)
9.1 ประเภทของการจัดเรียงข้อมูล
9.2 ประสิทธิภาพการทำงานของอัลกอริทึมการจัดเรียงข้อมูลแบบต่างๆ
9.3 การจัดเรียงข้อมูลแบบแทรกใส่ (Insertion Sort)
9.3.1 วิธีการจัดเรียงข้อมูลแบบแทรกใส่
9.3.2 ตัวอย่างการจัดเรียงข้อมูลแบบแทรกด้วยภาษาจาวา
9.4 การจัดเรียงข้อมูลแบบเลือก (Selection Sort)
9.4.1 วิธีการจัดเรียงข้อมูลแบบเลือก
9.4.2 ตัวอย่างการจัดเรียงข้อมูลแบบเลือกด้วยภาษาจาวา
9.5 การจัดเรียงข้อมูลแบบฟองอากาศ (Bubble Sort)
9.5.1 วิธีการจัดเรียงข้อมูลแบบฟองอากาศ
9.5.2 ตัวอย่างการจัดเรียงข้อมูลแบบฟองอากาศด้วยภาษาจาวา
9.6 การจัดเรียงข้อมูลแบบฮีพ (Heap Sort)
9.6.1 วิธีการจัดเรียงข้อมูลแบบฮีพ
9.6.2 ตัวอย่างการจัดเรียงข้อมูลแบบฮีพด้วยภาษาจาวา
9.7 การจัดเรียงข้อมูลแบบเชลล์ (Shell Sort)
9.7.1 วิธีการจัดเรียงข้อมูลแบบเชลล์
9.7.2 ตัวอย่างการจัดเรียงข้อมูลแบบเชลล์ด้วยภาษาจาวา
9.8 การจัดเรียงข้อมูลแบบเร็ว (Quick Sort)
9.8.1 วิธีการจัดเรียงข้อมูลแบบเร็ว
9.8.2 ตัวอย่างการจัดเรียงข้อมูลแบบเร็วด้วยภาษาจาวา
9.9 การจัดเรียงข้อมูลโดยการรวมข้อมูลเข้าด้วยกัน (Merge Sort)
9.9.1 วิธีการจัดเรียงข้อมูลโดยการรวมข้อมูลเข้าด้วยกัน
9.9.2 ตัวอย่างการจัดเรียงข้อมูลโดยการรวมข้อมูลเข้าด้วยกันโดยภาษาจาวา
9.10 การใช้งานการจัดเรียงข้อมูลแบบต่างๆโดยการทำมือ/เขียนโปรแกรม ด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียนที่ 9
- ปฎิบัติตามใบงานที่ 14 ใช้งานการจัดเรียงข้อมูลแบบต่าง ๆ

กิจกรรม : - ส่งเล่มรายงานและ ไฟล์นำเสนองานกลุ่ม ภายในสัปดาห์ที่ 15
- เนื่องจากได้มอบหมายเป็นงานกลุ่มให้ นศ. ไปศึกษาค้นคว้าเพิ่มเติมตั้งแต่สัปดาห์ที่ 1 และค่อยให้คำแนะนำกับ นศ. แต่ละกลุ่ม
- น.ศ. แต่ละกลุ่มนำเสนอหัวข้อที่ได้ไปศึกษาค้นคว้ามา
- อาจารย์ และ น.ศ.ร่วมกันอภิปรายหัวข้อที่รายงาน เกี่ยว กับอัลกอริทึมของการจัดเรียงข้อมูล ประสิทธิภาพของอัลกอริทึมนั้น และ โปรแกรมที่กลุ่มของ นศ. ได้พัฒนาขึ้นโดยใช้อัลกอริทึมการจัดเรียงที่ศึกษามา
- แบบฝึกหัดท้ายบทเรียน

10. การค้นหาข้อมูล (Searching)
10.1 ประเภทของการค้นหาข้อมูล
10.2 ประสิทธิภาพการทำงานของอัลกอริทึมการค้นหาข้อมูลแบบต่าง ๆ
10.3 การค้นหาข้อมูลแบบเรียงลำดับ (Sequential Search)
10.3.1 วิธีการค้นหาข้อมูลแบบเรียงลำดับ
10.3.2 ตัวอย่างการค้นหาข้อมูลแบบเรียงลำดับด้วยภาษาจาวา
10.4 การค้นหาข้อมูลแบบทวิภาค (Binary Search)
10.4.1 วิธีการค้นหาข้อมูลแบบทวิภาค
10.4.2 ตัวอย่างการค้นหาข้อมูลแบบทวิภาคด้วยภาษาจาวา
10.5 การค้นหาข้อมูลด้วยการแฮชชิ่ง (Hashing Search)
10.5.1 หลักการค้นหาข้อมูลด้วยการแฮชชิ่ง
10.5.2 ฟังก์ชันแฮชแบบพื้นฐาน
10.5.3 เทคนิคเพื่อจัดการกับการชนกันของข้อมูล (Collision Resolution)
1) การแฮชแบบเปิด (Open Hashing)
2) การแฮชแบบปิด (Close Hashing)
10.5.4 ตัวอย่างการค้นหาข้อมูลด้วยการแฮชชิ่งโดยภาษาจาวา
10.6 การใช้งานการค้นหาข้อมูลแบบต่างๆ โดยการทำมือ/เขียนโปรแกรมด้วยภาษาจาวา
- แบบฝึกหัดท้ายบทเรียนที่ 10
- ปฎิบัติตามใบงานที่ 15 ใช้งานการค้นหาข้อมูลแบบต่าง ๆ

กิจกรรม : - น.ศ. แต่ละกลุ่มนำเสนอหัวข้อที่ได้ไปศึกษาค้นคว้ามา
- อาจารย์ และ น.ศ.ร่วมกันอภิปรายหัวข้อที่รายงาน เกี่ยวกับอัลกอริทึมของการค้นหาข้อมูลประสิทธิภาพของอัลกอริทึมนั้นและ โปรแกรมที่ กลุ่มของ นศ. ได้พัฒนาขึ้นโดยใช้อัลกอริทึมการค้นหาข้อมูลที่ศึกษามา
- แบบฝึกหัดท้ายบทเรียน

สอบปลายภาค
กิจกรรม : - สอบภาคทฤษฎี

อาจารย์ผู้สอน