อัลกอริทึม
Introduced| English | ไทย |
|---|---|
| algorithm/ˈælɡərɪθəm/ | อัลกอริทึม |
| flowchart/ˈfləʊtʃɑːt/ | แผนภูมิไหล |
| pseudocode/ˈsuːdəʊkəʊd/ | โค้ดเทียม (pseudocode) |
| tracing/ˈtreɪsɪŋ/ | การวาดตามแบบ |
| binary search/ˈbaɪnəri sɜːtʃ/ | binary search |
| linear search/ˈlɪnɪə sɜːtʃ/ | linear search |
| efficiency/ɪˈfɪʃənsi/ | ประสิทธิภาพ |
ระบุว่าขั้นตอนวิธีต้องจัดการกับอินพุตใดบ้าง
- อัลกอริทึม (algorithm) อธิบายขั้นตอนที่ชัดเจนสำหรับงานหนึ่งๆ Procedure ที่แก้ปัญหาที่ระบุไว้是有限的 must terminate and give the correct result for every allowed input.
- การ succeed trace บนอินพุตหนึ่งแสดงกรณีนั้นเท่านั้น ไม่ใช่การพิสูจน์สำหรับทุกอินพุต กรณีขอบเขตและอินพุตว่างอาจเปิดเผยข้อผิดพลาดที่ตัวอย่างทั่วไปมองข้าม
สิ่งใดจำเป็นต่อการเป็นอัลกอริทึม? เลือกทุกข้อที่ใช้ได้
ขั้นตอนการแก้ปัญหาโจทย์ finite ที่กำหนด ต้องมีขั้นตอนที่ชัดเจน ผลลัพธ์ถูกต้อง และการสิ้นสุดกับอินพุตที่อนุญาต Pseudocode และ flowchart เป็นการนำเสนอ ไม่ใช่ข้อกำหนดต้องใช้ภาษาโปรแกรม某一 particular
แสดงทางเลือกและการอัปเดตอย่างชัดเจน
- แผนภูมิฟลอว์ (flowchart) ใช้เพชรตัดสินใจ สี่เหลี่ยมผืนผ้ากระบวนการ平行四边形的输入/输出 และแท่งเริ่มต้น/หยุด เชื่อมต่อกันด้วยลูกศรไหลแบบมีทิศทาง
- 伪代码 (pseudocode) อธิบายขั้นตอนโดยไม่จำเป็นต้องใช้ภาษาโปรแกรมหนึ่งภาษา ควรระบุความหมายของการกำหนดค่า จุดเริ่มต้นของดัชนี ขอบเขตของลูป และเงื่อนไขการแยกสาขา ก่อนจะทำ trace
จับคู่รูปร่าง flowchart แต่ละรูปกับความหมายของมัน
ใช้ process rectangles, decision diamonds และ start/stop terminals ตามที่กำหนด Input/output ปกติแสดงด้วย parallelogram ให้ฉลาก decision branches และทิศทาง flow
บันทึกค่าตัวแปรที่เป็นจริง
- Tracing ติดตามการอัปเดตที่กำหนดตามลำดับ ตัวแปรชั่วคราวอาจรักษาค่าไว้ซึ่งถ้าไม่มีจะถูกลบออก
- แสดง low, high, middle และค่าที่ใช้เปรียบเทียบสำหรับการค้นหาแบบ二分; แสดงตัวแปรที่เปลี่ยนทุกครั้งสำหรับการวนซ้ำทางคณิตศาสตร์ ตัดสินใจว่า procedure ทำอะไร ไม่ใช่แค่วัตถุประสงค์ที่ตั้งใจไว้
อนุกรมณการหาแบบ binary search ที่กำหนด. ใช้ขอบเขตแบบรวม (inclusive) ที่เริ่มจาก 0 และ floor ของค่าเฉลี่ยเป็นค่ากลาง การค้นหา 7 ใน [1,3,5,7,9,11] เปรียบเทียบ index 2/value 5, index 4/value 9, แล้ว index 3/value 7. จำนวนการเปรียบเทียบคือสามภายใต้อนุกรมณนี้
Linear เปรียบเทียบกับ binary search
การแบ่งครึ่งชนะการเช็คทีละตัว และช่องว่างยิ่งกว้างขึ้นเมื่อรายการยาวขึ้น
การใช้ขอบเขตinclusive แบบ zero-based และ floor((low+high)/2) Binary search ใช้การเปรียบเทียบกี่ครั้งเพื่อหาค่า 7 ใน [1,3,5,7,9,11]?
ดัชนีกลางคือ 2, 4 แล้วตามด้วย 3 ซึ่งมีค่า 5, 9 และ 7下进行การเปรียบเทียบสามครั้งตามนัยนิยามที่กำหนด
เปรียบเทียบภาระงานภายใต้สมมติฐานของมัน
- Linear search อาจหยุดก่อนแต่อาจตรวจสอบทั้งหมด n รายการ Binary search แบ่งครึ่งช่วงการค้นหาที่เรียงลำดับซ้ำๆ และต้องการการอัปเดตขอบเขตที่สอดคล้องกัน
- ประสิทธิภาพ (Efficiency) อธิบายว่าภาระงานที่ต้องการขยายตามขนาดข้อมูลอย่างไรภายใต้โมเดลที่กำหนด การเรียงลำดับก่อนมีค่าใช้จ่ายของตัวเอง; อินพุตที่ไม่ได้เรียงลำดับไม่สามารถพึ่งพาการรับประกันการเรียงลำดับของ binary search ได้
สำหรับรายการที่มี getItem One Million ที่เรียงลำดับแล้วโดยประมาณ Binary search ต้องการการเปรียบเทียบค่ากลางกี่ครั้งในกรณีแย่ที่สุด?
การเปรียบเทียบแต่ละครั้งลดช่วงการค้นหาที่เหลือลงครึ่งหนึ่ง ประมาณ 20 ครั้งเพียงพอสำหรับรายการที่มี ordered items的数量 One Million สิ่งนี้ไม่รวมต้นทุนการ sort ก่อนหน้า
Binary search ทำงานบนรายการที่ไม่เรียงลำดับ ได้ช้าลงเท่านั้น
หากขาดการจัดลำดับที่ต้องการ การทิ้งครึ่งหนึ่งอาจพลาด item ที่มีอยู่บางกรณีอาจสำเร็จโดยบังเอิญแต่ความถูกต้องไม่ได้รับประกัน
ตรวจสอบ 0 และดัชนีสุดท้ายที่อนุญาต. Sheet 4.4 พิจารณาลูปผลรวมโดยใช้ i น้อยกว่า n ซึ่งทำให้พลาดพจน์สุดท้าย Trace แบบ Euclidean ของ它也解释了终止:each positive divisor is replaced by a smaller nonnegative remainder until zero is reached.