Week 12 Engineering Problem 2

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
การเรียงลำดับข้อมูล (Sorting).
Advertisements

โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
Arrays.
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
แนวคิดในการเขียนโปรแกรม
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
การทำงานแบบเลือกทำ (Selection)
บทที่ 6 โครงสร้างข้อมูลลิ้งค์ลิสต์
BC322 ครั้งที่ 10 ตัวแปรชุด (Array)
พอยน์เตอร์ (Pointer) Chapter Introduction to Programming
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
Data Type part.II.
ฟังก์ชัน (Function).
ชนิดของข้อมูลและตัวดำเนินการ
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
การจัดเรียงข้อมูล Sorting.
Week 6 ประกาศค่าตัวแปร.
รับและแสดงผลข้อมูล.
PHP LANGUAGE.
อาเรย์ (Array).
เรื่อง ประเภทของข้อมูล
Arrays.
Arrays.
ตัวแปรแบบโครงสร้าง.
ขั้นตอนวิธี (Algorithm)
ข้อมูลพื้นฐานและตัวดำเนินการ
อาร์เรย์และข้อความสตริง
อาร์เรย์ (Array).
อาร์เรย์ (Array).
Suphot Sawattiwong Lab IV: Array Suphot Sawattiwong
ตัวแปรกับชนิดของข้อมูล
Data Structure and Algorithm
แถวอักขระ (string) ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
การทำงานกับ เลขจำนวน ในภาษา php การเขียนเว็บเพจด้วยภาษา php ศูนย์คอมพิวเตอร์โรงเรียนปลวกแดงพิทยาคม.
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ง30212 พื้นฐานการเขียนโปรแกรม ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
Week 12 Engineering Problem 2
การประมวลผลสายอักขระ
Computer Programming for Engineers
โปรแกรมประยุกต์อื่นๆ
การเขียนโปรแกรม ตอนที่ 1 (ต่อ)
A Comparison on Quick and Bubble sort on large scale data
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
บทที่ 10 สตริง.
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
โครงสร้างข้อมูลแบบรายการโยง (Link List)
โครงสร้างข้อมูลแบบลิงก์ลิสต์
หลักการเขียนโปรแกรม ( )
1. Global variable คือ ตัวแปรที่กำหนดหรือประกาศไว้นอกฟังก์ชันใด ๆ ทุกฟังก์ชัน สามารถนำตัวแปรประเภท Global ไปใช้ได้ทุกฟังก์ชัน.
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
โครงสร้างข้อมูลและอังกอลิทึม
บทที่ 2 โครงสร้างของภาษา C.
การกระทำทางคณิตศาสตร์
ตัวแปร และชนิดข้อมูล.
บทที่ 11 การจัดการข้อมูลสตริง
การจัดเรียงข้อมูล (sorting)
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การเขียนโปรแกรม (ภาษาซี)
การเขียนผังงาน ผังงาน (Flowchart)
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
ใบสำเนางานนำเสนอ:

Week 12 Engineering Problem 2

Outline ทบทวนการใช้อาเรย์ ปัญหาการจัดเรียงข้อมูล อัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort)แบบ pseudo-code ตัวอย่างการทำงานของอัลกอริทึม อัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) ในภาษา C

การประกาศอาเรย์ในภาษา C type name[elements]; name คือ ชื่ออาเรย์ type หมายถึง ชนิด อาทิเช่น int, float, ฯลฯ และ elements ระบุจำนวนสมาชิกในอาเรย์ ตัวอย่าง int billy[5]; float c[12], x[27];

ปัญหาในการจัดเรียงข้อมูล ปัญหาในการจัดเรียงข้อมูลสามารถกำหนดได้ดังนี้ Input: อาเรย์ A = <a1,a2,a3,…,an> ที่เก็บตัวเลขจำนวนเต็มจำนวนทั้งหมด n ตัว Output: อาเรย์ A = <a’1,a’2,a’3,…,a’n> ที่เก็บตัวเลขจำนวนเต็มจำนวนทั้งหมด n ตัว โดยที่ a’1≤ a’2 ≤ a’3 ≤… ≤ a’n การแก้ปัญหานี้สามารถทำได้หลายวิธี แต่วิธีที่เราจะศึกษามีชื่อเรียกว่าอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) ข้อมูลนำเข้าเป็นตัวเลขจำนวน n ตัว ข้อมูลนำออกเป็นตัวเลข n ตัวเดิมที่เรียงจากน้อยไปมาก

อัลกอริทึมการจัดเรียงข้อมูลแบบแทรก (Insertion Sort) อธิบายการทำงานโดยใช้ pseudo-code อธิบายการทำงานโดยใช้ pseudo-code

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 สมมติว่ามีตัวเลขอยู่ห้าตัวที่ต้องการจะจัดเรียงจากน้อยไปมากโดยใช้อัลกอริทึมจัดเรียงแบบแทรก สมมติว่ามีตัวเลขอยู่ห้าตัวที่ต้องการจะจัดเรียงจากน้อยไปมากโดยใช้อัลกอริทึมจัดเรียงแบบแทรก

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 ตัวเลขสีแดงคือตัวเลขที่ต้องการจะเปรียบเทียบกับตัวเลขข้างหน้าเพื่อหาตำแหน่งที่ถูกต้อง ตัวเลขสีแดงคือตัวเลขที่ต้องการจะเปรียบเทียบกับตัวเลขข้างหน้าเพื่อหาตำแหน่งที่ถูกต้อง

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 เนื่องจาก 4 มากกว่า 1 จึงไม่ต้องมีการย้ายตำแหน่งของ 4 เนื่องจาก 4 มากกว่า 1 จึงไม่ต้องมีการย้ายตำแหน่งของ 4

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 ตัวเลขถัดมาที่เราจะหาตำแหน่งที่ถูกต้องคือ 2 ตัวเลขถัดมาที่เราจะหาตำแหน่งที่ถูกต้องคือ 2

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 เนื่องจาก 2 น้อยกว่า 4 แสดงว่า 2 ต้องสลับตำแหน่งกับ 4 เนื่องจาก 2 น้อยกว่า 4 แสดงว่า 2 ต้องสลับตำแหน่งกับ 4

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 นำ 2 มาเปรียบเทียบกับตัวเลขข้างหน้าคือ 1 ในที่นี้ 2 มีค่ามากกว่า 1 เลข 2 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว นำ 2 มาเปรียบเทียบกับตัวเลขข้างหน้าคือ 1 ในที่นี้ 2 มีค่ามากกว่า 1 เลข 2 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 พิจารณาตัวเลขถัดมาคือเลข 6 นำเลข 6 ไปเปรียบเทียบกับตัวเลขข้างหน้าคือ เลข 4 พิจารณาตัวเลขถัดมาคือเลข 6 นำเลข 6 ไปเปรียบเทียบกับตัวเลขข้างหน้าคือ เลข 4

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 1,2,4,6,7 เนื่องจากเลข 6 มีค่ามากกว่าเลข 4 แล้ว เลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องสับเปลี่ยนตำแหน่งกับเลข 4 เนื่องจากเลข 6 มีค่ามากกว่าเลข 4 แล้ว เลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องสับเปลี่ยนตำแหน่งกับเลข 4

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 1,2,4,6,7 นำตัวเลขตัวถัดไปคือเลข 7 มาเปรียบเทียบกับตัวเลขข้างหน้าคือ เลข 6 นำตัวเลขตัวถัดไปคือเลข 7 มาเปรียบเทียบกับตัวเลขข้างหน้าคือ เลข 6

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 1,2,4,6,7 เนื่องจากเลข 7 มีค่ามากกว่าเลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องมีการสลับที่ เนื่องจากเลข 7 มีค่ามากกว่าเลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องมีการสลับที่

ตัวอย่างการทำงานของอัลกอริทึมการจัดเรียงแบบแทรก (Insertion Sort) 1,4,2,6,7 1,4,2,6,7 1,2,4,6,7 1,2,4,6,7 1,2,4,6,7 เนื่องจากตัวเลข 7 เป็นตัวเลขตัวสุดท้าย การจัดเรียงจึงสิ้นสุดลงโดยตัวเลขทั้ง 5 ตัวอยู่ในลำดับจากน้อยไปมากตามที่ต้องการ เนื่องจากเลข 7 มีค่ามากกว่าเลข 6 จึงอยู่ในตำแหน่งที่ถูกต้องแล้ว ไม่ต้องมีการสลับที่

อัลกอริทึมการจัดเรียงข้อมูลแบบแทรกใน C สังเกตว่าโค๊ดนี้เหมือนโค๊ดเทียมเป๊ะ เราต้องประกาศขนาดของ array A ให้เกินไว้หนึ่งค่าเพราะเราจะใช้ index ที่อยู่ในช่วง 1 ถึง 20

ตัวอย่างการทำงานของโปรแกรม

การจัดเรียงข้อมูลที่เป็นสตริง การจัดเรียงข้อมูลแบบแทรกสามารถใช้กับการจัดเรียงข้อมูลที่ไม่ใช่ตัวเลขได้ด้วย ขอเพียงแต่ให้มีตัวเปรียบเทียบที่บอกว่าข้อมูลที่ให้มาสองอัน = > หรือ < กัน เช่น เราสามารถจัดเรียงข้อมูลสตริงได้ เพราะเราสามารถใช้ฟังก์ชัน strcmp ซึ่งมีรูปแบบ int strcmp(char *string1, char *string2);

การเปรียบเทียบสตริงโดยใช้ strcmp ถ้า string1<string2, ค่าที่ได้จะน้อยกว่า 0 ถ้า string2<string1, ค่าที่ได้จะมากกว่า 0 ถ้า string1=string2, ค่าที่ได้จะเท่ากับ 0