การเรียงลำดับและการค้นหาแบบง่าย

Slides:



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

ระบบจัดการคลังข้อสอบส่วนกลาง
วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
ฐานข้อมูลสิทธิบัตรทั่วโลก (ไทย)
Chapter 8 : Logic Modeling & Data Modeling
การทำงานแบบเลือกทำ (Selection)
ครั้งที่ 12 การค้นหาข้อมูล (Searching)
การเรียงลำดับข้อมูล(Sorting)
SORTING.
6. โครงสร้างข้อมูลแบบแฟ้ม
การจัดเรียงข้อมูล Sorting.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
ทบทวน Array.
Microsoft Access.
Microsoft Access.
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
บทที่ 1. พื้นฐานความรู้ทั่วไป
ตัวแปรชุด.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
การเขียนผังงานแบบโครงสร้าง
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
ขั้นตอนวิธี (Algorithm)
2.5 ตัวแปรชุดมิติเดียวและตัวแปรชุดสองมิติ
การจำแนกบรรทัดข้อความ
Searching.
โครงสร้างการจัดเก็บข้อมูลเชิงกายภาพ
การวิเคราะห์ Competency
Data Structure and Algorithm
การจัดเรียงข้อมูล Sorting Internal Sorting External Sorting.
บทที่ 7 การเรียงลำดับภายนอก External sorting
เทคนิคการเรียงลำดับ Sorting Techniques
เทคนิคการค้นหาข้อมูล
บทที่ 5 เทคนิคการค้นหาข้อมูล (Searching Techniques)
คิว (Queue) Queue ADT Queue เป็น List ชนิดหนึ่ง แต่สำหรับ queue การแทรกข้อมูลลงบน queue (Insertion) จะทำที่ปลายใดปลายหนึ่งของ Queue ในขณะที่การลบข้อมูลออกจากคิว.
การสอบถามข้อมูลด้วยฟังก์ชั่นสำหรับ
CHARPTER 4 การสอบถามข้อมูลแบบมีเงื่อนไข
CHARPTER 3 การสอบถามข้อมูลพื้นฐาน
โครงสร้างข้อมูลคืออะไร ?
Week 12 Engineering Problem 2
Week 12 Engineering Problem 2
โปรแกรม Microsoft Access
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ลิงค์ลิสต์ (Linked List)
ฟังก์ชัน.
การใช้ PHP ติดต่อฐานข้อมูลMySQL
การออกแบบโครงสร้าง (Structured Design)
หลักการเขียนโปรแกรม ( )
CHAPTER 4 Control Statements
A Comparison on Quick and Bubble sort on large scale data
F M B N สมบัติของจำนวนนับ ตัวคูณร่วมน้อย (ค.ร.น.).
การเรียงข้อมูล 1. Bubble Sort 2. Insertion Sort 3. Heap Sort
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
การแก้ปัญหาโปรแกรม (Flowchart)
การค้นในปริภูมิสถานะ
ความหมาย รูปแบบหนึ่งของบทเรียน คอมพิวเตอร์ช่วยสอนซึ่ง มีการออกแบบบทเรียน โดยมีเป้าหมายที่จะเสนอ ข้อคำถามในรูปแบบต่าง ๆเพื่อให้ผู้เรียนฝึกปฏิบัติ
สารสนเทศ ข้อมูลและสารสนเทศ
การจัดเรียงข้อมูล (sorting)
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
โครงสร้างข้อมูลแบบ สแตก (stack)
ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การค้นในปริภูมิสถานะ
Week 13 Basic Algorithm 2 (Searching)
การแบ่งแยกและเอาชนะ Divide & Conquer
การแบ่งแยกและเอาชนะ Divide & Conquer
Wattanapong suttapak SE, ICT University of Phayao.
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
Data Structure and Algorithm
ใบสำเนางานนำเสนอ:

การเรียงลำดับและการค้นหาแบบง่าย Sorting & Searching

การเรียงลำดับและการค้นหาแบบง่าย Internal Sorting : Bubble Sort Insertion Sort Selection Sort Searching : Linear search Binary search 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Sorting ความหมาย การจัดเรียงลำดับ (Sorting) หมายถึงการจัดเรียงข้อมูล ให้เรียงลำดับตามเงื่อนไขที่กำหนดไว้ (มากไปน้อย (descending) หรือ น้อยไปมาก (ascending)) กรณีที่ข้อมูลในแต่เรคอร์ด (record)มีหลายฟิลด์ (field) เราต้องพิจารณาเลือกฟิลด์ ที่สนใจเพื่อใช้ในการเรียงลำดับ เช่น เรียงลำดับตามรหัสศึกษา เป็นต้น

Sorting ประเภทของการจัดเรียงลำดับ การจัดเรียงภายใน (Internal Sorting) เป็นการจัดเรียงลำดับข้อมูลที่เก็บอยู่ในหน่วยความจำของเครื่องคอมพิวเตอร์ การจัดเรียงภายนอก (External Sorting) การจัดเรียงข้อมูลที่เก็บอยู่ในสื่อบันทึกข้อมูล เช่น Disk โดยทั่วไปการเรียงประเภทนี้ มักใช้กับข้อมูลที่มีจำนวนมาก ที่ไม่สามารถเก็บไว้ในหน่วยความจำได้หมด การเรียงในแบบนี้จะต้องแบ่งข้อมูลออกเป็นส่วนย่อย แล้วนำมาเรียงด้วยการจัดเรียงแบบภายในก่อน แล้วจึงนำแต่ละส่วนย่อยมารวมกัน

Sorting วิธีการจัดเรียงข้อมูลแบบ Internal Sorting การจัดเรียงแบบบับเบิล (Bubble Sort) การจัดเรียงแบบแทรก (Insertion Sort) การจัดเรียงแบบเลือก (Selection Sort)

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

Algorithm Bubble_Sort (to sort unsorted array with size num) 1. for (j2, j<num, jj+1) for (i2, i≤num, ii+1) 1.1 if (data[i] < data[i-1]) 1.1.1 temp  data [i] 1.1.2 data[i]  data[i-1] 1.1.3 data[i-1]  temp 2. end.

43 22 80 17 36 16 29 22 43 80 17 36 16 29 22 43 17 80 36 16 29 22 43 17 36 80 16 29 22 43 17 36 16 80 29 22 43 17 36 16 29 80 22 17 43 36 16 29 80 22 17 36 43 16 29 80 22 17 36 16 43 29 80 22 17 36 16 29 43 80 Bubble Sort Pass 1 Pass 2 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Bubble Sort Pass 3 Pass 4 Pass 5 Pass 6 22 17 36 16 29 43 80 22 17 36 16 29 43 80 17 22 36 16 29 43 80 17 22 16 36 29 43 80 17 22 16 29 36 43 80 17 16 22 29 36 43 80 16 17 22 29 36 43 80 Bubble Sort Pass 3 Pass 4 Pass 5 Pass 6 344-211 Algorithmic Process and Programming , created by Dararat Saelee

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

Algorithm Insertion_Sort (ascending order) 1. for(i1, i<num, ii+1) 1.1 temp = data[i] 1.2 for(j  i ; j>0 && data[j-1]>temp ; j--) 1.2.1 data[j]  data[j-1]; 1.3 data[j]  temp; 2. end

Insertion Sort 43 22 80 17 36 16 29 22 43 80 17 36 16 29 17 22 43 80 36 16 29 17 22 36 43 80 16 29 16 17 22 36 43 80 29 16 17 22 29 36 43 80 #compare = 17, #move = 14, #pass = 5 What if descending order? 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Selection sort เป็นการจัดเรียงโดยการเริ่มต้นค้นหาข้อมูลตัวที่น้อยที่สุด (มากที่สุด) จากข้อมูลที่มีอยู่ทั้งหมด แล้วเอามาเก็บไว้ข้างนอก แล้วกลับไปหาข้อมูลตัวที่น้อยที่สุด (มากที่สุด) ในกองต่อไปจนกว่าจะหมดกอง

Algorithm Selection_Sort (ascending order) 1. for(i  0 ; i<max ; i++) 1.1 min_position  i 1.2 for(j  i+1 ; j<=max ; j++) 1.2.1 if(data[j] < data[min_position]) 1.2.1.1 min_position  j 1.3 temp  data[min_position] 1.4 data[min_position]  data[i] 1.5 data[i]  temp 2. end

Selection Sort (with smallest) 43 22 29 17 36 16 80 16 22 29 17 36 43 80 16 17 29 22 36 43 80 16 17 22 29 36 43 80 #move = 3, #compare = 21, #pass = 6 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Selection Sort (with largest) 43 22 80 17 36 16 29 43 22 29 17 36 16 80 16 22 29 17 36 43 80 16 22 17 29 36 43 80 16 17 22 29 36 43 80 #move = 4, #compare = 21, #pass = 6 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Searching คือการค้นหาข้อมูล จากชุดข้อมูล ซึ่งผลลัพธ์ จะต้องบอกได้ว่าค้นหาเจอหรือค้นหาไม่เจอ 2 search methods : Linear/Sequential search Binary search

Linear/Sequential Search เหมาะกับการค้นหาข้อมูลจากชุดข้อมูลขนาดเล็ก โดยเริ่มเปรียบเทียบข้อมูลที่ต้องการค้นหา (search key) กับข้อมูลตัวแรก จนกว่าจะเจอข้อมูลที่ต้องการ

Linear/Sequential Search กรณีข้อมูลไม่มีการเรียงลำดับ: ให้ค้นหาตั้งแต่ข้อมูลตัวแรกจนถึงตัวสุดท้ายของชุดข้อมูล กรณีข้อมูลถูกเรียงลำดับจากน้อยไปมาก: ให้ค้นหาตั้งแต่ข้อมูลตัวแรกจนถึงตัวสุดท้ายที่มีค่าน้อยกว่าข้อมูลที่ต้องการค้นหา

Linear/Sequential Search search key = 25 , (unsuccessful) 43 22 17 36 16 16 17 22 36 43 Sorted data What if descending sorted data? Unsorted data 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Binary Search ใช้ค้นหาข้อมูลบนชุดข้อมูลที่มีการเรียงลำดับเรียบร้อยแล้ว มีขั้นตอนดังนี้ 1. หาค่าข้อมูลที่อยู่ตรงกลางชุดข้อมูล (middle value) ซึ่งเป็นค่าที่อยู่อยู่ ณ ตำแหน่ง เมื่อ N คือจำนวนข้อมูลทั้งหมด 2. เปรียบเทียบค่าที่อยู่ตรงกลาง (middle value) กับค่าที่ต้องการค้นหา (search key)

Binary Search 3. ถ้าไม่ตรงกัน กรณีข้อมูลเรียงลำดับจากน้อยไปมาก ให้ดำเนินการดังนี้ 3.1 ถ้า search key < middle value concentrate on the first half data and do (1) - (3) 3.2 ถ้า search key > middle value concentrate on the second half

Binary Search Search key = 17 12 15 18 23 26 37 39 41 43 48 mid mid 12 15 18 23 26 37 39 41 43 48 mid mid mid 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Binary Search Search key = 37 12 15 18 23 26 37 39 41 43 48 mid mid 12 15 18 23 26 37 39 41 43 48 mid mid mid 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Exercise 1 Ascending Sort Searching 23 78 45 8 32 99 19 56 1) key = 32 23 78 45 8 32 99 19 56 Searching 1) key = 32 2) key = 70 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Exercise 2 Descending Sort 90 31 9 25 43 11 68 57 88 Searching 90 31 9 25 43 11 68 57 88 Searching 1) key = 89 2) key = 25 What if adds 18 at the end? 344-211 Algorithmic Process and Programming , created by Dararat Saelee

Have a courage to make your dream come true … 344-211 Algorithmic Process and Programming , created by Dararat Saelee