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

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

Week 13 Basic Algorithm 2 (Searching). Searching Arrays การค้นหาแบบเชิงเส้น (Linear search) Small arrays Unsorted arrays การค้นหาแบบไบนารี (Binary search)

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


งานนำเสนอเรื่อง: "Week 13 Basic Algorithm 2 (Searching). Searching Arrays การค้นหาแบบเชิงเส้น (Linear search) Small arrays Unsorted arrays การค้นหาแบบไบนารี (Binary search)"— ใบสำเนางานนำเสนอ:

1 Week 13 Basic Algorithm 2 (Searching)

2 Searching Arrays การค้นหาแบบเชิงเส้น (Linear search) Small arrays Unsorted arrays การค้นหาแบบไบนารี (Binary search) Large arrays Sorted arrays 2 *From: web.cs.wpi.edu/~cs1005/c03/elliott/handouts/Lecture15.ppt

3 Linear Search Algorithm ใช้กับข้อมูลที่มีจำนวนไม่มาก สามารถใช้ได้กับข้อมูลที่ยังไม่ถูกเรียงลำดับ (unsorted) การทำงานของการค้นหาแบบเชิงเส้น เริ่มจากสมาชิกตัวแรกของตัวแปรชุด ทำการเปรียบเทียบค่าของสมาชิกกับข้อมูล (key) ที่ ต้องการสืบค้น ทำการเปรียบเทียบกับสมาชิกตัวถัดไป จนกระทั่งพบข้อมูลที่ต้องการ หรือ... จนกระทั่งถึงสมาชิกตัวสุดท้ายในตัวแปรชุด โดยเฉลี่ยแล้ว เราจะพบข้อมูลที่ต้องการเมื่อทำ การเปรียบเทียบกับข้อมูลจำนวนประมาณ ครึ่งหนึ่งของจำนวนสมาชิกทั้งหมด 3

4 Linear Search C++ Code Ex 1: โปรแกรมแสดงการค้นหาแบบเชิงเส้น 4

5 Linear Search Results Ex 1: ผลการทำงานของโปรแกรม int a[13] = {1,100,2,66,55,44,88,77,12,23,45,9,87}; 5

6 Binary Search Algorithm สามารถใช้งานได้กับข้อมูลที่ถูกเรียบลำดับแล้ว เท่านั้น ภายหลังจากการเปรียบเทียบข้อมูลแต่ละครั้ง จะ มีการตัดข้อมูลที่สนใจออกไปครึ่งหนึ่ง การทำงานของการค้นหาแบบไบนารี หาสมาชิกในตัวแปรชุดที่ถูกเรียงไว้อยู่ในตำแหน่ง กึ่งกลางของสมาชิกที่สนใจ เปรียบเทียบค่าของสมาชิกดังกล่าวกับค่าของข้อมูล (key) ที่ต้องการสืบค้น หากมีค่าเท่ากัน ให้จบการทำงานและรายงานผล การค้นพบข้อมูลที่ต้องการ หากมีค่าไม่เท่ากัน ให้เลือกครึ่งหนึ่งของสมาชิก ทั้งหมดที่น่าจะมีข้อมูล (key) ที่ต้องการไว้เพื่อใช้ทำ การค้นหาต่อไป ทำซ้ำกระบวนการ หาสมาชิกกึ่งกลาง เปรียบเทียบ และเลือกสมาชิกครึ่งหนึ่งไปเรื่อยๆ จนกระทั่ง ค้นพบข้อมูลที่ต้องการ หรือ... ไม่เหลือสมาชิกเหลือให้เปรียบเทียบ 6

7 Binary Search Algorithm middle of the array compare a[6] and is smaller than 29 so the next search will use the lower half of the array search key = 19 a

8 Binary Search Algorithm search key = 19 use this as the middle of the array Compare a[2] with is smaller than 19 so use the top half for the next pass

9 Binary Search Algorithm search key = 19 use this as the middle of the array Compare a[4] with is bigger than 19 so use the bottom half a 19

10 Binary Search Algorithm 10 3 search key = 19 use this as the middle of the array Compare a[3] with 19 Found!! a 19

11 Binary Search Algorithm middle of the array compare a[6] and is smaller than 29 so the next search will use the lower half of the array search key = 18 a

12 Binary Search Algorithm search key = 18 use this as the middle of the array Compare a[2] with is smaller than 18 so use the top half for the next pass

13 Binary Search Algorithm search key = 18 use this as the middle of the array Compare a[4] with is bigger than 18 so use the bottom half a 19

14 Binary Search Algorithm 14 3 search key = 18 use this as the middle of the array Compare a[3] with 18 Does not match and no more elements to compare. Not Found!! a 19

15 Binary Search C++ Code Ex 2: โปรแกรมแสดงการค้นหาแบบเชิงเส้น 15

16 Binary Search Results Ex 2: ผลการทำงานของโปรแกรม int a[13] = {1,5,15,19,25,27,29,31,33,45,55,88,100}; 16

17 Searching Efficiency หากต้องการค้นข้อมูลจากสมาชิก 1,024 ตัว จะ ใช้จำนวนรอบในการทำงานเพียง 10 รอบเพื่อให้ พบ ( หรือไม่พบ ) ข้อมูลที่ต้องการ จะมีการคัดสมาชิกที่สนใจในแต่ละรอบการทำงานเป็น 512, 256, 128, 64, 32, 16, 8, 4, 2, 1 ตามลำดับ ในกรณีที่มีจำนวนสมาชิก 1 พันล้านตัว จะมีการ เปรียบเทียบอย่างมากที่สุด 30 ครั้ง ยิ่งมีจำนวนสมาชิกมากขึ้นเท่าใด ประสิทธิภาพ ในการค้นหาของการค้นหาแบบไบนารีจะมีมาก ขึ้นเมื่อเปรียบเทียบกับประสิทธิภาพของการ ค้นหาของการค้นหาแบบเชิงเส้น 17

18 ในหัวข้อนี้ ได้แนะนำถึงการเขียนโปรแกรม สำหรับการค้นหาข้อมูล (Searching) เพื่อฝึก ทักษะในการเขียนโปรแกรมที่ใช้งานข้อมูลในตัว แปรชุดที่มีความซับซ้อนมากกว่าการเรียงข้อมูล ได้แนะนำวิธีการค้นหาข้อมูล 2 รูปแบบคือ การค้นหาแบบเชิงเส้น (Linear Search) การค้นหาแบบไบนารี (Binary Search) Linear Search จะทำการค้นหาจากตัวแรกของ ตัวแปรชุดไปเรื่อยๆ ทีละตัว สามารถทำงานได้กับข้อมูลที่ไม่ได้ เรียงลำดับมาก่อน 18 Summary

19 Binary Search จะทำการค้นหาข้อมูลในตัวแปร ชุดซึ่งต้องเป็นข้อมูลที่ได้รับการเรียงลำดับแล้ว และเปรียบเทียบกับค่ากลางของข้อมูลและตัด ช่วงข้อมูลที่ค้นหาทีละครึ่งไปเรื่อยๆ Binary Search เป็นวิธีการค้นหาที่มี ประสิทธิภาพกว่า Linear Search แต่ต้องมีการ เรียงข้อมูลก่อน 19 Summary

20 Labs Lab 13.1: จากโปรแกรม Binary Search ใน ตัวอย่างที่ 2 ให้ทำการแก้ไขให้โปรแกรมดังนี้ ถ้าพบข้อมูลที่ต้องการ ให้โปรแกรมแสดง ข้อความว่า “ Could not find element in array a ” ในลักษณะเดียวกับกรณีโปรแกรมในตัวอย่างที่ 1 ตัวอย่างการทำงาน 20

21 Labs Lab 13.2: จาก lab 13.1 ให้ทำการแก้ไขให้ โปรแกรมดังนี้ เพิ่มการแสดงผลในแต่ละรอบการทำงาน โดย แสดงเครื่องหมาย ‘ [] ’ ล้อมรอบสมาชิกที่อยู่ใน ขอบเขตการค้นหาในรอบนั้น ตัวอย่างการทำงาน 1: Seach key = 19 21

22 Labs Lab 13.2: จาก lab 13.1 ให้ทำการแก้ไขให้ โปรแกรมดังนี้ เพิ่มการแสดงผลในแต่ละรอบการทำงาน โดย แสดงเครื่องหมาย ‘ [] ’ ล้อมรอบสมาชิกที่อยู่ใน ขอบเขตการค้นหาในรอบนั้น ตัวอย่างการทำงาน 2: Seach key = 18 22

23 Labs Lab 13.3: Buble Sort + Binary Search ให้นศ. เขียนโปรแกรมดังต่อไปนี้ สร้างตัวแปรชุดสำหรับเก็บเลขจำนวนเต็ม 10 จำนวน ทำการสุ่มค่าระหว่าง ให้กับสมาชิกทั้ง 10 ตัว ทำการเรียงข้อมูลด้วยวิธี Bubble sort ทำการค้นหาข้อมูลที่ต้องการด้วยวิธีไบนารี (Binary search) Note: ข้อควรระวัง ค่า index จากตัวอย่างในเรื่อง Bubble sort จะเริ่มที่ 1 ในขณะนี่ค่า index จากตัวอย่าง ที่ใช้ในเรื่อง search จะเริ่มที่ 0 23

24 Labs Lab 13.3: ตัวอย่างการทำงานของ Buble Sort + Binary Search 24 Bubble Sort Binary Search


ดาวน์โหลด ppt Week 13 Basic Algorithm 2 (Searching). Searching Arrays การค้นหาแบบเชิงเส้น (Linear search) Small arrays Unsorted arrays การค้นหาแบบไบนารี (Binary search)

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


Ads by Google