วันพฤหัสบดีที่ 13 มกราคม พ.ศ. 2554

การฝึกปฏิบัติงานสัปดาห์ที่ 10 (4 - 7 ม.ค 2554)

- รับต่อสัญญาลดค่าน้ำ 1 ใน 3 ทหารผ่านศึก/พนักงาน
- รับเปลี่ยนสัญญาการใช้น้ำประปาใหม่
- รับคำขอใช้น้ำประปารายใหม่
- บันทึกข้อมูลการปฏิบัติงานในระบบ TEMPLATE (HR)
- พิมพ์หนังสือราชการ
- พิมพ์หนังสือบันทึกข้อความ
- ถ่ายเอกสาร
- ติดข้อมูลสรุปการดำเนินงานประจำเดือนธันวาคม 2553

ปัญหาที่เกิดขึ้น
- ผู้ใช้น้ำไม่ค่อยรับฟังเหตุผล

ประโยชน์ที่ได้รับ
- รู้จักการใช้เหตุผลในการพูด

วันพฤหัสบดีที่ 6 มกราคม พ.ศ. 2554

การฝึกปฏิบัติงานสัปดาห์ที่ 9 (27 - 30 ธ.ค. 2553)

- พิมพ์ ส.ค.ส.2554
- รับคำขอผู้ใช้น้ำประปารายใหม่
- เปลี่ยนสัญญาการใช้น้ำประปาใหม่
- พิมพ์หนังสือข้อความ
- พิมพ์หนังสือว่าจ้าง
- เขียนข้อมูลผู้ขอใช้น้ำประปารายใหม่
- บันทึกการปฏิบัติงานในระบบ TEMPLATE (HR)
- พิมพ์ใบขอเบิกค่าใช้จ่ายเงินสดย่อย
- เขียนข้อมูลลงในสมุดแจ้งประมาณราคา
- ถ่ายเอกสาร

ปัญหาที่เกิดขึ้น
- เครื่องคอมพิวเตอร์ขัดข้อง ทำให้งานล้าช้า
- ข้อมูลของผู้ใช้น้ำขัดแย้งกับระบบ

ประโยชน์ที่ได้รับ
- ในเรื่องการแก้ปัญหาข้อมูลผู้ใช้น้ำตรงกับระบบ
- ได้รู้ถึงหลักการพิมพ์ใบขอเบิกขอจ้าง

วันอังคารที่ 28 ธันวาคม พ.ศ. 2553

การฝึกปฏิบัติงานสัปดาห์ที่ 8 (20 - 24 ธ.ค. 2553)

- รับคำขอผู้ใช้น้ำใหม่
- เขียนข้อมูลในสมุดคำขอติดตั้งน้ำประปารายใหม่
- รับเปลี่ยนแปลงสัญญาใหม่
- พิมพ์หนังสือข้อความ
- พิมพ์หนังสือขอเบิก/จ้าง
- ถ่ายเอกสาร
- บันทึกการปฏิบัติงานในระบบ TEMPLATE (HR)
- พิมพ์ ส.ค.ส ปี 2554

ปัญหาที่เกิดขึ้น
- ผู้ใช้น้ำนำหลักฐานมาไม่ครบ
- ผู้ใช้น้ำไม่ได้สำเนาเอกสารเกือบทุกครั้งที่มาติดต่อ

การแก้ปัญหา
- บอกกล่าวผู้ใช้น้ำต้องนำเอกสารมาติดต่อทุกครั้ง

ประโยชน์ที่ได้รับ
- รู้จักการแก้ไขเฉพาะหน้า
- รู้จักการพิมพ์ซอง ส.ค.ส. แบบง่าย

วันจันทร์ที่ 20 ธันวาคม พ.ศ. 2553

การฝึกปฏิบัติงานสัปดาห์ที่ 7 (13 - 17 ธ.ค. 2553)

- บันทึกการปฏิบัติงานในระบบ TEMPLATE (HR)
- ประทับตรายาง
- รับคำขอใช้น้ำประปาใหม่
- เขียนข้อมูลของผู้ใช้น้ำในสมุดคำขอใช้น้ำประปารายใหม่
- เปลี่ยนสัญญาการใช้น้ำประปาใหม่
- พิมพ์หนังสือบันทึกข้อความ
- พิมพ์หนังสือราชการ
- พิมพ์ข้อมูลงบการเงินประจำเดือนพฤศจิกายน
- ออกนอกสถานที่เพื่อรับคำขอติดตั้งมาตร ณ ตำบลบางคนที
- ตรวจนับเงินสดย่อย
- ถ่ายเอกสาร
- เขียนประมาณการการติดตั้งมาตรวัดน้ำ

ปัญหาที่เกิดขึ้น
- การออกหน่วยแต่ละครั้ง ผู้ใช้น้ำมักจะลืมหลักฐานในการขอใช้น้ำ

ประโยชน์ที่ได้รับ
- รู้จักการตรวจนับเงินสดย่อย
- การแก้ไขปัญหาเฉพาะหน้า

วันจันทร์ที่ 13 ธันวาคม พ.ศ. 2553

การฝึกปฏิบัติงานสัปดาห์ที่ 6 (7 - 9 ธ.ค. 2553)

- คีย์ข้อมูลการใช้น้ำประปาใหม่
- บันทึกข้อมูลการปฏิบัติงานในระบบ TEMPLATE (HR)
- เปลี่ยนสัญญาใหม่
- พิมพ์หนังสือราชการ
- พิมพ์หนังสือส่งเขต
- พิมพ์หนังสือบันทึกข้อความ
- เขียนข้อมูลในสมุดคำขอติดตั้งรายใหม่ปี2554
- พิมพ์งานเปิดซอง ประมูลราคาการวางท่อ
- ออกหน่วยราชการ ณ วัดศรัทธาธรรม
- ออกนอกสถานที่เพื่อรับคำขอติดตั้งน้ำประปารายใหม่ ณ ตำบลกระดังงา

ปัญหาที่เกิดขึ้น
- บางครั้งผู้ใช้น้ำให้ข้อมูลไม่ครบ จึงทำให้ยากต่อการติดต่อ

ประโยชน์ที่ได้รับ
- รู้จักการพิมพ์งานเปิดซอง เพื่อประมูลราคาการวางท่อ
- รู้จักการทำงานเป็นระบบ

วันอาทิตย์ที่ 5 ธันวาคม พ.ศ. 2553

การฝึกปฏิบัติงานสัปดาห์ที่ 5 (29 - 3 ธ.ค. 2553)

- บันทึกข้อมูลการปฏิบัติงานในระบบ TEMPLATE (HR)
- คีย์ข้อมูลการใช้น้ำประปารายใหม่
- ปรับปรุงแก้ไขสัญญาการใช้น้ำประปาใหม่
- เขียนข้อมูลคำขอติดตั้งน้ำประปารายใหม่
- พิมพ์หนังสือข้อความ
- พิม์หนังสือว่าจ้าง
- ต้ดกระดาษแจ้งผู้ใช้น้ำประปา
- แยกใบเสร็จเงินประกัน
- ลงทะเบียนส่งหนังสือ แบบตอบรับ แจ้งผู้ใช้น้ำให้ชำระค่าน้ำประปาค้างจ่าย

ปัญหาที่เกิดขึ้น
- ใบตอบรับมาก บางครั้งจึงทำให้สับสน

วิธแก้ไข
- ทำครั้งละชุด

ประโยชน์ที่ได้รับ
- รู้จักการทำงานเป็นทีม หมู่คณะ
- แก้ไขเฉพาะหน้า

วันอังคารที่ 30 พฤศจิกายน พ.ศ. 2553

การฝึกปฏิบัติงานสัปดาห์ที่ 4 (22-26 พ.ย. 2553)

-บันทึกข้อความการปฏิบัติงานในระบบ TEMPLATE(HR)
-ปริ้นงานการปฏิบัติงาน
-คีย์ข้อมูลการใช้น้ำประปารายใหม่
-เปลี่ยนสัญญาการใช้น้ำใหม่
-เย็บเอกสาร
-เขียนข้อมูลในสมุดคำขอผู้ใช้น้ำรายใหม่
-พิมพ์หนังสือข้อความ
-พิมพ์หนังสือว่าจ้าง

ประโยชน์ที่ได้รับ
- แก้ปัญหาเฉพาหน้า

วันเสาร์ที่ 20 พฤศจิกายน พ.ศ. 2553

การฝึกปฏิบัติงานสัปดาห์ที่ 3 (15 - 19 พ.ย. 2553)

- คีย์ข้อมูลการใช้น้ำประปารายใหม่
ปัญหา : ในบางรายเป็นบ้านซื้อ - ขาย ทำให้การลงข้อมูลแตกต่างจากบ้านที่อย้อาศัย
วิธีแก้ปัญหา : ตรวจสอบหลักฐานก่อนที่จะคีย์ข้อมูลลงเพื่อความรวดเร็วของเราและผู้ใช้น้ำ
- ปรับเปลี่ยนสัญญาใหม่
- ลงทะเบียนใบนำส่ง แบบตอบรับ
- บันทึกข้อมูลการปฏิบัติงานในระบบ TEMPLATE(HR)
- พิมพ์หนังสือบันทึกข้อความ

วันพุธที่ 17 พฤศจิกายน พ.ศ. 2553

การฝึกปฏิบัติงานสัปดาห์ที่ 2 (8 - 12 พ.ย. 2553)

- บันทึกข้อมูลการปฏิบัติงานในระบบ TEMPLATE (HR)
- คีย์ข้อมูลสัญญาการใช้น้ำประปา
ปัญหา : ในบางรายเป็นบ้านซื้อ - ขาย ทำให้ยากต่อการคีย์ข้อมูล
วิธีแก้ปัญหา : ค่อยๆทำ ค่อยๆเรียนรู้
- เปลี่ยนสัญญาการใช้น้ำประปาใหม่
- เขียนใบนำส่ง แบบตอบรับ
- พิมพ์หังสือบันทึกข้อความ
- บันทึกข้อมูลการจ่ายเงินของการวางมาตรใหม่
- หาตัวมาตรน้ำ
ปัญหา : การหามาตรแต่ละตัวยาก เพราะมาตรมีนับร้อย
วิธีแก้ปัญหา : มาตรแต่ละตัวจะมีชื่อติดอยู่ทำให้การหามาตรง่ายขึ้น
- ออกนอกสถานที่เพื่อรับคำขอติดตั้งนำประปารายใหม่ ณ หมู่4 ตำบลท้ายหาด

วันพฤหัสบดีที่ 11 พฤศจิกายน พ.ศ. 2553

การฝึกปฏิบัติงาน สัปดาห์ที่ 1 ( 1 – 5 พ.ย. 2553)

- แยกเอกสารเก่า - ใหม่
- บันทึกข้อมูลการปฏิบัติงานในระบบ TEMPLATE(HR)
ปัญหา : การลงข้อมูลแต่ละครั้งห้ามพิมพ์ผิด โปรแกรมมีความซับซ้อน
วิธีแก้ปัญหา : ตรวจสอบทุกครั้งก่อนส่งให้เขต ค่อยๆ เรียนรู้และทำความเข้าใจ
- กรอกข้อมูลสรุปงบการเงิน
ปัญหา : ตัวเลขมีจำนวนมาก ในบางครั้งอาจจะมองคลาดเคลื่อน
วิธีแก้ปัญหา : ตรวจสอบทุกครั้งก่อนที่จะไปทำจุดอื่น
- เขียนใบเสร็จภาษี ณ ที่จ่าย
ปัญหา : ห้ามเขียนผิด เนื่องจากถ้าเขียนผิดเพียงหนึ่งตัว ใบเสร็จนั้นก็จะใช้ไม่ได้ เพราะมีใบก๊อบปี้ทั้งหมด 4 ใบ
วิธีแก้ปัญหา : การเขียนแต่ละครั้งจะต้องมีสมาธิ เพราะงานจะได้ไม่ล่าช้า
- กรอกข้อมูลลงในสมุดเปลี่ยนประเภทบ้าน ซื้อ – ขาย
- เขียนเอกสารสัญญาการใช้น้ำประปา
- คีย์ข้อมูลสัญญาการใช้น้ำประปา

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

ลูกแรดเตรียมพร้อมล่าเหยื่อ

สิ่งที่ได้รับจากการฝึกประสบการณ์วิชาชีพ3
1.ได้รู้จักการทำงานเป็นระบบและมีแบบแผน
2.มีความรับผิดชอบในด้านการทำงาน
3.มีความอดทนต่อการทำงาน
4.สามารถนำประสบการณ์ที่เรียนไปใช้ในการทำงานจริงได้
5.รู้จักการทำงานเป็นทีม
6.รู้จักความสามัคคีในหมู่คณะ
7.นำความรู้ที่ได้มาพัฒนาตัวเองให้ดีขึ้น

DTS 12-15/09/2009

สรุป Sorting (ต่อ)
การเรียงลำดับแบบเร็ว (quick sort)
เป็นวิธีการเรียงลำดับที่ใช้เวลาน้อยเหมาะสำหรับข้อมูลที่มีจำนวนมากที่ต้องการความรวดเร็วในการทำงาน วิธีนี้จะเลือกข้อมูลจากกลุ่มข้อมูลขึ้นมาหนึ่งค่าเป็นค่าหลัก แล้วหาตำแหน่งที่ถูกต้องให้กับค่าหลักนี้ เมื่อได้ตำแหน่งที่ถูกต้องแล้ว ใช้ค่าหลักนี้เป็นหลักในการแบ่งข้อมูลออกเป็นสองส่วนถ้าเป็นการเรียงลำดับจากน้อยไปมาก ส่วนแรกอยู่ในตอนหน้าข้อมูล ทั้งหมดจะมีค่าน้อยกว่าค่าหลักที่เป็นตัวแบ่งส่วน อีกส่วนหนึ่งจะอยู่ในตำแหน่งตอนหลังข้อมูลทั้งหมด จะมีค่ามากกว่าค่าหลัก แล้วนำแต่ละส่วนย่อยไปแบ่งย่อยในลักษณะเดียวกันต่อไปจนกระทั่งแต่ละส่วนไม่สามารถแบ่งย่อยได้อีกต่อไปจะได้ข้อมูลที่มีการเรียงลำดับตามที่ต้องการ

ถ้าเป็นการเรียงลำดับจากน้อยไปมากการเปรียบเทียบเพื่อหาตำแหน่งให้กับค่าหลักตัวแรกเริ่มจากข้อมูลในตำแหน่งแรกหรือสุดท้ายก็ได้ ถ้าเริ่มจากข้อมูลที่ตำแหน่งที่ 1 เป็นค่าหลัก พิจารณาเปรียบเทียบค่าหลักกับข้อมูลในตำแหน่งสุดท้าย ถ้าค่าหลักมีค่าน้อยกว่าให้เปรียบเทียบกับข้อมูลในตำแหน่งรองสุดท้ายไปเรื่อย ๆ จนกว่าจะพบค่าที่น้อยกว่าค่าหลัก แล้วให้สลับตำแหน่งกัน

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

การเรียงลำดับแบบฐาน (radix sort)
เป็นการเรียงลำดับโดยการพิจารณาข้อมูลทีละหลัก
1. เริ่มพิจารณาจากหลักที่มีค่าน้อยที่สุดก่อน นั่นคือถ้าข้อมูลเป็นเลขจำนวนเต็มจะพิจารณาหลักหน่วยก่อน
2. การจัดเรียงจะนำข้อมูลเข้ามาทีละตัว แล้วนำไปเก็บไว้ที่ซึ่งจัดไว้สำหรับค่านั้น เป็นกลุ่ม ๆ ตามลำดับการเข้ามา
3. ในแต่ละรอบเมื่อจัดกลุ่มเรียบร้อยแล้ว ให้รวบรวมข้อมูลจากทุกกลุ่มเข้าด้วยกัน โดยเริ่มเรียงจากกลุ่มที่มีค่าน้อยที่สุดก่อนแล้วเรียงไปเรื่อย ๆ จนหมดทุกกลุ่ม
4. ในรอบต่อไปนำข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่วยเรียบร้อยแล้วมาพิจารณาจัดเรียงในหลักสิบต่อไป ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกหลักจะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามต้องการ

วันพุธที่ 16 กันยายน พ.ศ. 2552

DTS11-15/09/52

เรื่อง ตาราง แฮช (Hash Table)
เมื่อขนาดของเอกภพสัมพัทธ์เพิ่มมากขึ้น ตามหลักการยังคง สามารถทำงานได้ แต่ขนาดของตารางT จะมีผลกระทบทางแก้ปัญหาคือต้องหาวิธีการจับคู่คีย์ให้มีช่วงกว้างที่เล็กลงโดยเรียกวิธีการนี้ว่าฟังก์ชันแฮช (Hash Function)ผลลัพธ์ที่ได้เรียกว่าตารางแฮช (Hash Table)การเข้าถึงข้อมูลโดยตรง กำหนด ให้ k เป็นคีย์ ถูกจัดเก็บอยู่ใน ช่อง k ด้วยการทำแฮชด้วยพื้นฐาน การจัดเก็บในช่องที่ h(k) โดยใช้ฟังก์ชัน h เพื่อคำนวณหาช่องของคีย์โดยการจับคู่กับเอกภพสัมพัทธ์U ในตาราง T
1. กรณีที่เลวร้ายที่สุด ในการแทรกข้อมูลคือ o(1)
2. การลบสมาชิก สามารถทำได้ด้วยเวลาที่น้อยที่สุดของ o(1)
ทางปฏิบัติ ใช้เทคนิค ฮิวริสติก (Heuristic) ในการสร้างฟังก์ชันแฮช แนวทางหนึ่งที่ดีคือ การแปลงค่าของข้อมูลที่มีอยู่แล้วด้วยข้อมูลที่มีอยู่(วิธีการหาร:Division method)ฟังก์ชันแฮช คือการกำหนดค่าคีย์ที่เกิดขึ้นในเอกภพสัมพัทธ์จากตัวเลขธรรมชาติ
1.วิธีการหาร (The Division Method)
2.วิธีการคูณ(The Multiplication Method)
3.วิธีทั่วไป (Universal hashing)
เทคนิคลำดับของการตรวจสอบ
1. การตรวจสอบเชิงเส้น (Linear Probing)
2.การตรวจสอบด้วยสมการกำลังสอง(Quadratic Probing)
3. การสร้างฟังก์ชันแฮชแบบสองเท่า(Double Hashing)
1.การตรวจสอบเชิงเส้น (Linear Probing)รูปแบบของ ฟังก์ชันคือh(k, i) = (h` (k) + i) mod mเมื่อ i = 0, 1, 2, . . . , m-1h` คือ auxiliary ของฟังก์ชันแฮช
2. การตรวจสอบด้วยสมการกำลังสอง(Quadratic Probing)
รูปแบบของ ฟังก์ชันคือh(k, i) = (h` (k) + c1i + c2i2) mod mเมื่อ i = 0, 1, 2, . . . , m-1h` คือ auxiliary ของฟังก์ชันแฮชc1 + c2 ≠ 0 เป็นค่าคงที่แบบ auxiliary
3. การสร้างฟังก์ชันแฮชแบบสองเท่า (Double Hashing)รูปแบบของ ฟังก์ชันคือ
h(k, i) = (h1, 9k) + ih2 (k)) mod mเมื่อ h1 และ h2 เป็น auxiliary ของฟังก์ชันค่า k เป็นค่าเริ่มต้นของ ตำแหน่งการตรวจสอบ และค่าoffset

DTS10-15/09/52

เรื่อง การเรียงลำดับ(sorting)
การเรียงลำดับ (sorting) เป็นการจัดให้เป็นระเบียบ มีแบบแผน ช่วยให้การค้นหาสิ่งของหรือข้อมูล ซึ่งจะสามารถกระทำได้รวดเร็วและมีประสิทธิภาพ เช่น การค้นหาความหมายของคำในพจนานุกรม ทำได้ค่อนข้างง่ายและรวดเร็วเนื่องจากมีการเรียงลำดับคำตามตัวอักษรไว้อย่างมีระบบและเป็นระเบียบ หรือ การค้นหาหมายเลขโทรศัพท์ในสมุดโทรศัพท์ ซึ่งมีการเรียงลำดับ ตามชื่อและชื่อสกุลของเจ้าของโทรศัพท์ไว้ ทำให้สามารถค้นหา หมายเลขโทรศัพท์ของคนที่ต้องการได้อย่างรวดเร็ว เป็นต้น
วิธีการเรียงลำดับ
วิธีการเรียงลำดับสามารถแบ่งออกเป็น 2 ประเภท คือ
(1)การเรียงลำดับแบบภายใน (internal sorting) เป็นการเรียงลำดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำหลัก เวลาที่ใช้ในการเรียงลำดับจะคำนึงถึงเวลาที่ใช้ในการเปรียบเทียบและเลื่อนข้อมูลภายในความจำหลัก
(2) การเรียงลำดับแบบภายนอก(external sorting) เป็นการเรียงลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำสำรอง ซึ่งเป็นการเรียงลำดับข้อมูลในแฟ้มข้อมูล (file) เวลาที่ใช้ในการเรียงลำดับต้องคำนึงถึงเวลาที่เสียไประหว่างการถ่ายเทข้อมูลจากหน่วยความจำหลัก
การเรียงลำดับแบบเลือก (selection sort)
ทำการเลือกข้อมูลมาเก็บในตำแหน่งที่ ข้อมูลนั้นควรจะอยู่ทีละตัว โดยทำการค้นหาข้อมูลนั้นในแต่ละรอบแบบเรียงลำดับถ้าเป็นการเรียงลำดับ
การจัดเรียงลำดับแบบเลือกเป็นวิธีที่ง่ายและตรงไปตรงมา แต่มีข้อเสียตรงที่ใช้เวลาในการจัดเรียงนาน
เพราะแต่ละรอบต้องเปรียบเทียบกับข้อมูลทุกตัว ถ้ามีจำนวนข้อมูลทั้งหมด n ตัว ต้องทำการเปรียบเทียบทั้งหมด
การเรียงลำดับแบบฟอง (Bubble Sort)
เป็นวิธีการเรียงลำดับที่มีการเปรียบเทียบข้อมูลในตำแหน่งที่อยู่ติดกัน
1. ถ้าข้อมูลทั้งสองไม่อยู่ในลำดับที่ถูกต้องให้สลับตำแหน่งที่อยู่กัน
2. ถ้าเป็นการเรียงลำดับจากน้อยไปมากให้นำข้อมูลตัวที่มีค่าน้อยกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก ถ้าเป็นการเรียงลำดับจากมากไปน้อยให้นำข้อมูล ตัวที่มีค่ามากกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่าน้อย
การเรียงลำดับแบบเร็ว (quick sort)
วิธีนี้จะเลือกข้อมูลจากกลุ่มข้อมูลขึ้นมาหนึ่งค่าเป็นค่าหลัก แล้วหาตำแหน่งที่ถูกต้องให้กับค่าหลักนี้ เมื่อได้ตำแหน่งที่ถูกต้องแล้ว ใช้ค่าหลักนี้เป็นหลักในการแบ่งข้อมูลออกเป็นสองส่วน ถ้าเป็นการเรียงลำดับจากน้อยไปมาก ส่วนแรกอยู่ในตอนหน้าข้อมูล ทั้งหมดจะมีค่าน้อยกว่าค่าหลักที่เป็นตัวแบ่งส่วน อีกส่วนหนึ่งจะอยู่ในตำแหน่งตอนหลังข้อมูลทั้งหมด จะมีค่ามากกว่าค่าหลัก แล้วนำแต่ละส่วนย่อยไปแบ่งย่อยในลักษณะเดียวกันต่อไปจนกระทั่งแต่ละส่วนไม่สามารถแบ่งย่อยได้อีก ต่อไปจะได้ข้อมูลที่มีการเรียงลำดับตามที่
ต้องการ
การเรียงลำดับแบบแทรก (insertion sort)
เป็นวิธีการเรียงลำดับที่ทำการเพิ่มสมาชิกใหม่เข้าไปในเซต ที่มีสมาชิกทุกตัวเรียงลำดับอยู่แล้ว และทำให้เซตใหม่ที่ได้นี้มีสมาชิกทุกตัวเรียงลำดับด้วย วิธีการเรียงลำดับจะ
1. เริ่มต้นเปรียบเทียบจากข้อมูลในตำแหน่งที่ 1 กับ 2 หรือข้อมูลในตำแหน่งสุดท้ายและรองสุดท้ายก็ได้
ถ้าเป็นการเรียงลำดับจากน้อยไปมาก
2. จะต้องจัดให้ข้อมูลที่มีค่าน้อยอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก และถ้าเรียงจากมากไปน้อยจะก็จะ
การเรียงลำดับแบบฐาน (radix sort)
เป็นการเรียงลำดับโดยการพิจารณาข้อมูลทีละหลัก
1. เริ่มพิจารณาจากหลักที่มีค่าน้อยที่สุดก่อน นั่นคือถ้าข้อมูลเป็นเลขจำนวนเต็มจะพิจารณาหลักหน่วยก่อน
2. การจัดเรียงจะนำข้อมูลเข้ามาทีละตัว แล้วนำไปเก็บไว้ที่ซึ่งจัดไว้สำหรับค่านั้น เป็นกลุ่ม ๆ ตามลำดับการเข้ามา
3. ในแต่ละรอบเมื่อจัดกลุ่มเรียบร้อยแล้ว ให้รวบรวมข้อมูลจากทุกกลุ่มเข้าด้วยกัน โดยเริ่มเรียงจากกลุ่มที่มีค่าน้อยที่สุดก่อนแล้วเรียงไปเรื่อย ๆ จนหมดทุกกลุ่ม
4. ในรอบต่อไปนำข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่วยเรียบร้อยแล้วมาพิจารณาจัดเรียงในหลักสิบต่อไป ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกหลักจะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามต้องการ

DTS10-15/09/52

เรื่อง การเรียงลำดับ(sorting)
การเรียงลำดับ (sorting) เป็นการจัดให้เป็นระเบียบ มีแบบแผน ช่วยให้การค้นหาสิ่งของหรือข้อมูล ซึ่งจะสามารถกระทำได้รวดเร็วและมีประสิทธิภาพ เช่น การค้นหาความหมายของคำในพจนานุกรม ทำได้ค่อนข้างง่ายและรวดเร็วเนื่องจากมีการเรียงลำดับคำตามตัวอักษรไว้อย่างมีระบบและเป็นระเบียบ หรือ การค้นหาหมายเลขโทรศัพท์ในสมุดโทรศัพท์ ซึ่งมีการเรียงลำดับ ตามชื่อและชื่อสกุลของเจ้าของโทรศัพท์ไว้ ทำให้สามารถค้นหา หมายเลขโทรศัพท์ของคนที่ต้องการได้อย่างรวดเร็ว เป็นต้น
วิธีการเรียงลำดับ
วิธีการเรียงลำดับสามารถแบ่งออกเป็น 2 ประเภท คือ
(1)การเรียงลำดับแบบภายใน (internal sorting) เป็นการเรียงลำดับที่ข้อมูลทั้งหมดต้องอยู่ในหน่วยความจำหลัก เวลาที่ใช้ในการเรียงลำดับจะคำนึงถึงเวลาที่ใช้ในการเปรียบเทียบและเลื่อนข้อมูลภายในความจำหลัก
(2) การเรียงลำดับแบบภายนอก(external sorting) เป็นการเรียงลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำสำรอง ซึ่งเป็นการเรียงลำดับข้อมูลในแฟ้มข้อมูล (file) เวลาที่ใช้ในการเรียงลำดับต้องคำนึงถึงเวลาที่เสียไประหว่างการถ่ายเทข้อมูลจากหน่วยความจำหลัก
การเรียงลำดับแบบเลือก (selection sort)
ทำการเลือกข้อมูลมาเก็บในตำแหน่งที่ ข้อมูลนั้นควรจะอยู่ทีละตัว โดยทำการค้นหาข้อมูลนั้นในแต่ละรอบแบบเรียงลำดับถ้าเป็นการเรียงลำดับ
การจัดเรียงลำดับแบบเลือกเป็นวิธีที่ง่ายและตรงไปตรงมา แต่มีข้อเสียตรงที่ใช้เวลาในการจัดเรียงนาน
เพราะแต่ละรอบต้องเปรียบเทียบกับข้อมูลทุกตัว ถ้ามีจำนวนข้อมูลทั้งหมด n ตัว ต้องทำการเปรียบเทียบทั้งหมด
การเรียงลำดับแบบฟอง (Bubble Sort)
เป็นวิธีการเรียงลำดับที่มีการเปรียบเทียบข้อมูลในตำแหน่งที่อยู่ติดกัน
1. ถ้าข้อมูลทั้งสองไม่อยู่ในลำดับที่ถูกต้องให้สลับตำแหน่งที่อยู่กัน
2. ถ้าเป็นการเรียงลำดับจากน้อยไปมากให้นำข้อมูลตัวที่มีค่าน้อยกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก ถ้าเป็นการเรียงลำดับจากมากไปน้อยให้นำข้อมูล ตัวที่มีค่ามากกว่าอยู่ในตำแหน่งก่อนข้อมูลที่มีค่าน้อย
การเรียงลำดับแบบเร็ว (quick sort)
วิธีนี้จะเลือกข้อมูลจากกลุ่มข้อมูลขึ้นมาหนึ่งค่าเป็นค่าหลัก แล้วหาตำแหน่งที่ถูกต้องให้กับค่าหลักนี้ เมื่อได้ตำแหน่งที่ถูกต้องแล้ว ใช้ค่าหลักนี้เป็นหลักในการแบ่งข้อมูลออกเป็นสองส่วน ถ้าเป็นการเรียงลำดับจากน้อยไปมาก ส่วนแรกอยู่ในตอนหน้าข้อมูล ทั้งหมดจะมีค่าน้อยกว่าค่าหลักที่เป็นตัวแบ่งส่วน อีกส่วนหนึ่งจะอยู่ในตำแหน่งตอนหลังข้อมูลทั้งหมด จะมีค่ามากกว่าค่าหลัก แล้วนำแต่ละส่วนย่อยไปแบ่งย่อยในลักษณะเดียวกันต่อไปจนกระทั่งแต่ละส่วนไม่สามารถแบ่งย่อยได้อีก ต่อไปจะได้ข้อมูลที่มีการเรียงลำดับตามที่
ต้องการ
การเรียงลำดับแบบแทรก (insertion sort)
เป็นวิธีการเรียงลำดับที่ทำการเพิ่มสมาชิกใหม่เข้าไปในเซต ที่มีสมาชิกทุกตัวเรียงลำดับอยู่แล้ว และทำให้เซตใหม่ที่ได้นี้มีสมาชิกทุกตัวเรียงลำดับด้วย วิธีการเรียงลำดับจะ
1. เริ่มต้นเปรียบเทียบจากข้อมูลในตำแหน่งที่ 1 กับ 2 หรือข้อมูลในตำแหน่งสุดท้ายและรองสุดท้ายก็ได้
ถ้าเป็นการเรียงลำดับจากน้อยไปมาก
2. จะต้องจัดให้ข้อมูลที่มีค่าน้อยอยู่ในตำแหน่งก่อนข้อมูลที่มีค่ามาก และถ้าเรียงจากมากไปน้อยจะก็จะ
การเรียงลำดับแบบฐาน (radix sort)
เป็นการเรียงลำดับโดยการพิจารณาข้อมูลทีละหลัก
1. เริ่มพิจารณาจากหลักที่มีค่าน้อยที่สุดก่อน นั่นคือถ้าข้อมูลเป็นเลขจำนวนเต็มจะพิจารณาหลักหน่วยก่อน
2. การจัดเรียงจะนำข้อมูลเข้ามาทีละตัว แล้วนำไปเก็บไว้ที่ซึ่งจัดไว้สำหรับค่านั้น เป็นกลุ่ม ๆ ตามลำดับการเข้ามา
3. ในแต่ละรอบเมื่อจัดกลุ่มเรียบร้อยแล้ว ให้รวบรวมข้อมูลจากทุกกลุ่มเข้าด้วยกัน โดยเริ่มเรียงจากกลุ่มที่มีค่าน้อยที่สุดก่อนแล้วเรียงไปเรื่อย ๆ จนหมดทุกกลุ่ม
4. ในรอบต่อไปนำข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่วยเรียบร้อยแล้วมาพิจารณาจัดเรียงในหลักสิบต่อไป ทำเช่นนี้ไปเรื่อย ๆ จนกระทั่งครบทุกหลักจะได้ข้อมูลที่เรียงลำดับจากน้อยไปมากตามต้องการ

วันจันทร์ที่ 14 กันยายน พ.ศ. 2552

DTS09-01/09/52

กราฟ (Graph)
เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น อีกชนิดหนึ่ง กราฟเป็นโครงสร้างข้อมูลที่มีการนำไปใช้ในงานที่เกี่ยวข้องกับการแก้ปัญหาที่ค่อนข้างซับซ้อนเช่น การวางข่าย งานคอมพิวเตอร์ การวิเคราะห์เส้นทางวิกฤติ และปัญหาเส้นทางที่สั้นที่สุดโดยทั่ว ๆ ไปการเขียนกราฟเพื่อแสดงให้เห็นความสัมพันธ์ ของสิ่งที่เราสนใจแทนโหนดด้วย จุด (pointes) หรือวงกลม (circles)ที่มีชื่อหรือข้อมูลกำกับ เพื่อบอกความแตกต่างของแต่ละโหนดและเอ็จแทนด้วยเส้นหรือเส้นโค้งเชื่อมต่อระหว่างโหนดสองโหนดถ้าเป็นกราฟแบบมีทิศทางเส้นหรือเส้นโค้งต้องมีหัวลูกศรกำกับทิศทางของความสัมพันธ์ด้วยกราฟแบบไม่มีทิศทางเป็นเซตแบบจำกัดของโหนดและเอ็จ โดยเซตอาจจะว่างไม่มีโหนดหรือเอ็จเลยเป็นกราฟว่าง (Empty Graph)แต่ละเอ็จจะเชื่อมระหว่างโหนดสองโหนด หรือเชื่อมตัวเอง เอ็จไม่มีทิศทางกำกับ ลำดับของการเชื่อมต่อกันไม่สำคัญ นั่นคือไม่มีโหนดใดเป็นโหนดแรก (First Node) หรือไม่มีโหนดเริ่มต้น และไม่มีโหนดใดเป็นโหนดสิ้นสุดกราฟแบบมีทิศทาง เป็นเซตแบบจำกัดของโหนดและเอ็จ โดยเซตอาจจะว่างไม่มีโหนดหรือเอ็จเลยเป็น
กราฟว่าง (Empty Graph) แต่ละเอ็จจะเชื่อมระหว่างโหนดสองโหนด เอ็จมีทิศทางกำกับแสดงลำดับของการเชื่อมต่อกัน โดยมีโหนดเริ่มต้น(Source Node) และ โหนดสิ้นสุด (Target Node)
การแทนกราฟในหน่วยความจำด้วยวิธีเก็บเอ็จทั้งหมดใน แถวลำดับ 2 มิติ จะค่อนข้างเปลืองเนื้อที่ เนื่องจากมีบางเอ็จที่เก็บซ้ำอาจหลีกเลี่ยงปัญหานี้ได้โดยใช้แถวลำดับ 2 มิติเก็บโหนดและ พอยเตอร์ชี้ไปยงตำแหน่งของโหนดต่าง ๆ ที่สัมพันธ์ด้วย และใช้ แถวลำดับ1 มิติเก็บโหนดต่าง ๆ ที่มีความสัมพันธ์กับโหนดในแถวลำดับ 2 มิติ
การท่องไปในกราฟ
การท่องไปในกราฟ (graph traversal) คือกระบวนการเข้าไปเยือนโหนดในกราฟ โดยมีหลักในการทำงานคือ แต่ละโหนดจะถูกเยือนเพียงครั้งเดียว สำหรับการท่องไปในทรีเพื่อเยือนแต่ละโหนดนั้นจะมีเส้นทางเดียวแต่ในกราฟระหว่างโหนดอาจจะมีหลายเส้นทาง ดังนั้นเพื่อป้องกันการท่องไปในเส้นทางที่ซ้ำเดิมจึงจำเป็นต้องทำ
เครื่องหมายบริเวณที่ได้เยือนเสร็จเรียบร้อยแล้วเพื่อไม่ให้เข้าไปเยือนอีก สำหรับเทคนิคการท่องไปในกราฟมี 2 แบบดังนี้
1. การท่องแบบกว้าง (Breadth First Traversal)
2. การท่องแบบลึก (Depth First Traversal)

วันอาทิตย์ที่ 6 กันยายน พ.ศ. 2552

DTS08-25/08/52

บทที่7
TREE
ทรี (Tree) เป็นโครงสร้างข้อมูลที่ความสัมพันธ์ระหว่าง โหนดจะมีความสัมพันธ์ลดหลั่นกันเป็นลำดับชั้นได้มีการนำรูปแบบทรีไปประยุกต์ใช้ในงานต่าง ๆ อย่างแพร่หลาย ส่วนมากจะใช้สำหรับแสดงความสัมพันธ์ระหว่างข้อมูลแต่ละโหนดจะมีความสัมพันธ์กับโหนดในระดับที่ต่ำลงมา หนึ่งระดับได้หลาย ๆ โหนดเรียกโหนดดังกล่าวว่า โหนดแม่โหนดที่อยู่ต่ำกว่าโหนดแม่อยู่หนึ่งระดับเรียกว่า โหนดลูก โหนดที่อยู่ในระดับสูงสุดและไม่มีโหนดแม่เรียกว่า โหนดราก โหนดที่มีโหนดแม่เป็นโหนดเดียวกันเรียกว่า โหนดพี่น้อง โหนดที่ไม่มีโหนดลูก เรียกว่าโหนดใบ เส้นเชื่อมแสดงความสัมพันธ์ระหว่างโหนดสองโหนดเรียกว่า กิ่ง
นิยามที่เกี่ยวข้องกับทรี
1. ฟอร์เรสต์ หมายถึง กลุ่มของทรีที่เกิดจากการเอาโหนดรากของทรีออกหรือ เซตของทรีที่แยกจากกัน
2. ทรีที่มีแบบแผน (Ordered Tree)หมายถึง ทรีที่โหนดต่าง ๆ ในทรีนั้นมีความสัมพันธ์ที่แน่นอน เช่น ไปทางขวาไปทางซ้าย เป็นต้น
3. ทรีคล้าย (Similar Tree) คือทรีที่มีโครงสร้างเหมือนกัน หรือทรีที่มีรูปร่างของทรีเหมือนกัน โดยไม่คำนึงถึงข้อมูลที่อยู่ในแต่ละโหนด
4. ทรีเหมือน (Equivalent Tree) คือทรีที่เหมือนกันโดยสมบูรณ์ โดยต้องเป็นทรีที่คล้ายกันและแต่ละโหนดในตำแหน่งเดียวกันมีข้อมูลเหมือนกัน
5. กำลัง (Degree) หมายถึงจำนวนทรีย่อยของโหนด นั้น ๆ
6. ระดับของโหนด (Level of Node) คือระยะทางในแนวดิ่งของโหนดนั้น ๆ ที่อยู่ห่างจากโหนดราก เมื่อกำหนดให้ โหนดรากของทรีนั้นอยู่ระดับ 1และกิ่งแต่ละกิ่งมีความเท่ากันหมด คือ ยาวเท่ากับ 1หน่วย ซึ่งระดับของโหนดจะเท่ากับจำนวนกิ่งที่น้อยที่สุดจากโหนดรากไปยังโหนดใด ๆ บวกด้วย 1และจำนวนเส้นทางตามแนวดิ่งของโหนดใด ๆ ซึ่งห่างจากโหนดราก เรียกว่า ความสูง (Height) หรือความลึก (Depth)
การแปลงทรีทั่วไปให้เป็นไบนารีทรี
ขั้นตอนการแปลงทรีทั่วๆ ไปให้เป็นไบนารีทรี มีลำดับขั้นตอนการแปลง ดังต่อไปนี้
1. ให้โหนดแม่ชี้ไปยังโหนดลูกคนโต แล้วลบความสัมพันธ์ ระหว่างโหนดแม่และโหนดลูกอื่น ๆ
2. ให้เชื่อมความสัมพันธ์ระหว่างโหนดพี่น้อง
3. จับให้ทรีย่อยทางขวาเอียงลงมา 45 องศา

DTS07-11/08/52

บทที่6
คิว (Queue) เป็นโครงสร้างข้อมูลแบบเชิงเส้นหรือลิเนียรลิสต์ซึ่งการเพิ่มข้อมูลจะกระทำที่ปลายข้างหนึ่งซึ่งเรียกว่าส่วนท้ายหรือเรียร (rear) และการนำข้อมูลออกจะกระทำที่ปลายอีกข้างหนึ่งซึ่งเรียกว่า ส่วนหน้า หรือฟรอนต์ (front)
การทํางานของคิวการใสสมาชิกตัวใหม่ลงในคิว เรียกว่า Enqueue การแทนที่ขอมูลของคิวการแทนที่
ขอมูลของคิว สามารถทําได้ 2 วิธี คือ1. การแทนที่ข้อมูลของคิวแบบลิงค์ลิสต์2. การแทนที่ข้อมูลของคิวแบบอะเรย์
การดำเนินการเกี่ยวกับคิว ได้แก่
1. Create Queue 6. Empty Queue
2. Enqueue 7. Full Queue
3. Dequeue 8. Queue Count
4. Queue Front 9. Destroy Queue
5. Queue Rear
1. Create Queueจัดสรรหน่วยความจําให่แก่ Head Node และใหคา pointer ทั้ง 2 ตัวมีค่าเปน null และจํานวนสมาชิกเป็น 0
2. Enqueueการเพิ่มข้อมูลเข้าไปในคิว
3. Dequeueการนําขอมูลออกจากคิว
4. Queue Frontเป็นการนําข้อมูลที่อยู่ส่วนต้นของคิวมาแสดง
5. Queue Rearเป็นการนําข้อมูลที่อยู่ส่วนท้ายของคิวมาแสดง
6. Empty Queueเป็นการตรวจสอบว่าคิวว็างหรือไม่
7. Full Queue เป็นการตรวจสอบว่าคิวเต็มหรือไม่
8. Queue Countเป็นการนับจํานวนสมาชิกที่อยู่ในคิว
9. Destroy Queueเป้นการลบข้อมูลทั้งหมดที่อยู่ในคิว
การนําข้อมูลเข้าสู่คิว จะไม่สามารถนําเข้าในขณะที่คิวเต็ม หรือไมมีที่ว่าง ถ้าพยายามนําเข้าจะทําให้เกิดความผิดพลาดที่เรียกว่า underflow