วันพฤหัสบดีที่ 15 ตุลาคม พ.ศ. 2552

DTS10-15-09-52

Sortingเป็นการจัดให้เป็นระเบียบมีแบบแผน ช่วยให้การค้นหาสิ่งของหรือข้อมูล ซึ่งจะสามารถกระทำได้รวดเร็วและมีประสิทธิภาพ เช่น การค้นหาหมายเลขโทรศัพท์ในสมุดโทรศัพท์ ซึ่งมีการเรียงลำดับ ตามชื่อและชื่อสกุลของเจ้าของโทรศัพท์ไว้ ทำให้สามารถค้นหา หมายเลขโทรศัพท์ของคนที่ต้องการได้อย่างรวดเร็ว เป็นต้นการเรียงข้อมูล สามารถแบ่งได้เป็น 2 ประเภทด้วยกันคือการเรียงข้อมูลแบบภายใน (Internal Sorting) คือ การเรียงลำดับข้อมูล โดยทั้งหมดต้องจัดเก็บอยู่ในหน่วยความจำหลัก (main memory) ที่มีการเข้าถึงข้อมูลได้เร็ว โดยไม่จำเป็นต้องใช้หน่วยความจำสำรอง เช่น ดิสค์ หรือเทปสำหรับการจัดเก็บชั่วคราว ใช้ในกรณีที่ข้อมูลไม่มากเกินกว่าพื้นที่ความจำที่กำหนดให้กับผู้ใช้แต่ละรายการเรียงข้อมูลแบบภายนอก (External Sorting) คือ การ เรียงลำดับข้อมูลที่มีขนาดใหญ่เกินกว่าที่จะสามารถเก็บไว้ใน พื้นที่ความจำหลักที่กำหนดให้ได้ในคราวเดียว ดังนั้นข้อมูล ส่วนมากต้องเก็บไว้ในไฟล์ข้อมูลที่อยู่บนดิสค์ เทป เป็นต้น สำหรับการเรียงข้อมูลแบบภายนอกจะต้องคิดถึงเวลาที่ใช้ใน การถ่ายเทข้อมูลจากหน่วยความจำชั่วคราวกับหน่วยความจำหลัก ด้วยเช่นกัน v

Bubble Sort หลักของการเรียงแบบนี้คือ จะเปรียบเทียบและแลกเปลี่ยนข้อมูล 2 ค่าที่อยู่ติดกันในลักษณะที่เรากำหนด เช่น จากน้อยไปมาก หรือจากมากไปน้อย โดยจะทำการเปรียบเทียบข้อมูลทั้งชุดจนกว่าจะมีการเรียงตามลำดับทั้งหมดขั้นตอนการทำงานของอัลกอริทึม

Quick Sort การเรียงลำดับในลักษณะนี้ เป็นการปรับปรุงมาจากการเรียงลำดับแบบ Bubble เพื่อให้การเรียงลำดับเร็วขึ้น วีธีนี้เหมาะกับการเรียงข้อมูลที่มีจำนวนมาก หรือมีขนาดใหญ่ และเป็นวิธีการเรียงข้อมูลที่ให้ค่าเฉลี่ยของเวลาน้อยที่สุดเท่าที่ค้นพบวิธีหนึ่งการเรียงลำดับแบบ Quick Sortจะเป็นการเปรียบเทียบสมาชิกที่ไม่อยู่ติดกัน โดยกำหนดข้อมูลค่าหนึ่ง เพื่อแบ่งชุดข้อมูลที่ต้องการเรียงลำดับออกเป้น 2 ส่วน จากนั้นก็จะทำการแบ่งย่อยชุดข้อมูล 2 ส่วนนั้นลงไปอีก ทำแบบนี้ไปเรื่อยๆจนข้อมูลแต่ละชุดมีสมาชิกเหลือเพียงตัวเดียวและทำให้ชุดข้อมูลทั้งหมดมีการเรียงลำดับ

Insertion Sort การเรียงลำดับที่ง่ายไม่ซับซ้อน เป็นการนำข้อมูลใหม่เพิ่มเข้าไปในชุดข้อมูลที่มีการเรียงลำดับอยู่แล้ว โดยข้อมูลใหม่ที่นำเข้ามาจะแทรกอยู่ในตำแหน่งทางขวาของชุดข้อมูลเดิม และยังคงทำให้ข้อมูลทั้งหมดมีการเรียงลำดับวิธีนี้เริ่มต้นโดยการเรียงลำดับข้อมูล 2 ตัวแรกของชุดข้อมูล หลังจากนั้นเพิ่มข้อมูลตัวที่ 3 เข้ามา จะมีการเปรียบเทียบค่ากับข้อมูล 2 ตัวแรก และแทรกอยู่ในตำแหน่งที่เหมาะสม และสำหรับการเพิ่มข้อมูลตัวต่อๆไปก็จะทำเหมือนเดิมจนข้อมูลทุกตัวมีการเรียงลำดับขั้นตอนการทำงานของอัลกอริทึม

การค้นหาข้อมูลแบบ Searching วิธีการค้นหามี 2 วิธีคือ

1.การค้นหาแบบเรียงลำดับ Sequential Searchหากข้อมูลที่ต้องการค้นหาไม่ได้ถูกเรียงลำดับมาก่อน เทคนิคที่ใช้การค้นหาข้อมูลจะมีไม่มากนักซึ่งหนึ่งในวิธีนั้นก็คือการค้นหาแบบเรียงลำดับ ซึ่งเป็นการค้นหาแบบลิเนียร์ โดยการเปรียบเทียบข้อมูลทีละตัวจนกว่าจะเจอข้อมูลที่ต้องการ ทำให้ Big-O ของวิธีการนี้มีค่าเท่ากับ O( N ) โดยมีวิธีที่ใช้ในการค้นหาแบบเรียงลำดับคือ1.เริ่มต้นกำหนดข้อมูลที่ต้องการจะค้นหา2.ทำการค้นหาข้อมูลที่ต้องการโดยเริ่มตั้งแต่ข้อมูลแรกสุด3.ทำการเปรียบเทียบข้อมูลว่าตรงกับที่ต้องการหรือไม่4.หากข้อมูลไม่ตรงกับที่ต้องการ ให้เลื่อนไปยังตำแหน่งถัดไปเพื่อเปรียบเทียบ จนกว่าจะเจอข้อมูลที่ต้องการ

2.การค้นหาแบบไบนารีเสิร์ช Binary Searchข้อมูลที่เราต้องการค้นหาถูกเรียงลำดับมาก่อนแล้ว เราสามารถใช้เทคนิคการค้นหาที่มีประสิทธิภาพสูงขึ้นมาได้โดยใช้วิธีการค้นหาแบบไบนารีเสิร์ช โดยการเริ่มต้นค้นหาที่ตรงกลางข้อมูล แทนที่จะเป็นต้น หรือท้ายข้อมูลแบบการค้นหาแบบเรียงลำดับ โดยใช้หลักการของไบนารีเสิร์ชทรี เมื่อเทียบกับข้อมูลในตำแหน่งตรงกลางแล้ว หากข้อมูลที่ต้องการค้นหามีค่าน้อยกว่า จะเริ่มทำการค้นหาข้อมูลอีกครั้งในช่วง low ถึง mid-1 หากข้อมูลที่ต้องการค้นหามีค่ามากกว่า จะทำการเริ่มต้นค้นหาข้อมูลอีกครั้งในช่วง mid-1 ถึง high จากนั้นทำการค้นหาแบบเดิมไปจนกว่าจะเจอกับค่าที่ต้องการ