การจัดเรียงข้อมูล Sorting.

Slides:



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

สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การจำลองความคิด รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
การทำงานแบบเลือกทำ (Selection)
Computer Programming 1 LAB Test 3
การเรียงลำดับข้อมูล(Sorting)
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
Hashing Function มีหลายฟังก์ชั่น การเลือกใช้ขึ้นอยู่กับความเหมาะสมของข้อมูล ตัวอย่างของฟังก์ชั่นแฮชมีดังนี้ 1. Mod คือการนำค่าคีย์มา mod ด้วยค่า n ใด.
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
Control structure part II
Lecture 10: อาร์เรย์หนึ่งมิติ
การเรียงลำดับและการค้นหาแบบง่าย
LAB # 4 Computer Programming 1 1. พิจารณาโปรแกรมต่อไปนี้
LAB # 5 Computer Programming 1 1.
LAB # 4.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
Week 6 ประกาศค่าตัวแปร.
Week 15 C Programming.
วิชา การออกแบบและพัฒนาซอฟต์แวร์
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
โครงสร้างควบคุม 1. โครงสร้างควบคุมแบบวนทางเลือก
บทที่ 1. พื้นฐานความรู้ทั่วไป
คำสั่งควบคุมการทำงาน
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
สาขาวิชาคอมพิวเตอร์และเทคโนโลยี อ.เลาขวัญ งามประสิทธิ์
การจำลองความคิด
Arrays.
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
ลำดับการทำงานหน่วยความจำ
การเขียนผังงานแบบโครงสร้าง
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
ขั้นตอนวิธี (Algorithm)
2.5 ตัวแปรชุดมิติเดียวและตัวแปรชุดสองมิติ
การจำแนกบรรทัดข้อความ
Searching.
คำสั่งควบคุมการทำงาน
โครงสร้างการจัดเก็บข้อมูลเชิงกายภาพ
การเปลี่ยนแปลงเกี่ยวกับตัวแปร
การจัดเรียงข้อมูล Sorting Internal Sorting External Sorting.
บทที่ 7 การเรียงลำดับแบบภายนอก External Sorting
บทที่ 7 การเรียงลำดับภายนอก External sorting
เทคนิคการเรียงลำดับ Sorting Techniques
เทคนิคการค้นหาข้อมูล
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
โครงสร้างข้อมูลคืออะไร ?
บทนำเกี่ยวกับระบบฐานข้อมูล
Week 12 Engineering Problem 2
Week 12 Engineering Problem 2
Week 7 การเขียนโปรแกรมเบื้องต้น
Recursion การเรียกซ้ำ
โปรแกรม Microsoft Access
หลักการเขียนโปรแกรม ( )
A Comparison on Quick and Bubble sort on large scale data
หลักการเขียนโปรแกรม ( )
ง การงานอาชีพและเทคโนโลยี 1 ครูสหรัฐ บัวทอง
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
การเรียงข้อมูล 1. Bubble Sort 2. Insertion Sort 3. Heap Sort
บทที่ 2 การวิเคราะห์อัลกอริทึม
… Cache …L1,L2.
ความหมาย รูปแบบหนึ่งของบทเรียน คอมพิวเตอร์ช่วยสอนซึ่ง มีการออกแบบบทเรียน โดยมีเป้าหมายที่จะเสนอ ข้อคำถามในรูปแบบต่าง ๆเพื่อให้ผู้เรียนฝึกปฏิบัติ
บทที่ 2 โครงสร้างของภาษา C.
การจัดเรียงข้อมูล (sorting)
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
โครงสร้างข้อมูลแบบ สแตก (stack)
ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Week 13 Basic Algorithm 2 (Searching)
การทำซ้ำ Pisit Nakjai.
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
Data Structure and Algorithm
ใบสำเนางานนำเสนอ:

การจัดเรียงข้อมูล Sorting

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

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

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

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

ตัวอย่าง Function การจัดเรียงแบบ Bubble

ตัวอย่าง: Bubble Sort 44 55 12 42 94 18 06 67 ข้อมูล 8 ตัวทำ 7 รอบ รอบที่ ข้อมูล 1 06 44 55 12 42 94 18 67 2 06 12 44 55 18 42 94 67 3 06 12 18 44 55 42 67 94 4 06 12 18 42 44 55 67 94 5 06 12 18 42 44 55 67 94 6 06 12 18 42 44 55 67 94 7 06 12 18 42 44 55 67 94

int main() { int A[ELEMENTS]={44,55,12,42,94,6,18,67}; int x; cout<<"NON SORTED LIST:"<<endl; for(x=0;x<ELEMENTS;x++) cout<<A[x]<<endl; } exchange_sort(A,ELEMENTS); cout<<endl<<"SORTED LIST"<<endl; for(x=1;x<=ELEMENTS;x++) return 0; #include <iostream.h> #define ELEMENTS 8 void exchange_sort(int x[],int length) { int temp; for(int i=0;i<length;i++) for (int j=length;j>i;j--) if(x[j-1]>x[j]) temp=x[j-1]; x[j-1]=x[j]; x[j]=temp; }

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

ตัวอย่าง Function การเรียงแบบ Insertion

ตัวอย่าง:Insertion Sort 44 55 12 42 94 18 06 67 ตัวอย่าง:Insertion Sort ข้อมูล 8 ตัวทำ 7 รอบ รอบที่ ข้อมูล 2 44 55 12 42 94 18 06 67 3 12 44 55 42 94 18 06 67 4 12 42 44 55 94 18 06 67 5 12 42 44 55 94 18 06 67 6 12 18 42 44 55 94 06 67 7 06 12 18 42 44 55 94 67 8 06 12 18 42 44 55 67 94

int main() { int A[ELEMENTS]={44,55,12,42,94,06,18,67}; int x; cout<<"NON SORTED LIST:"<<endl; for(x=0;x<ELEMENTS;x++) cout<<A[x]<<endl; } insertion_sort(A,ELEMENTS); cout<<endl<<"SORTED LIST"<<endl; return 0; #include <iostream.h> #define ELEMENTS 8 void insertion_sort(int x[],int length) { int key,i; for(int j=1;j<length;j++) key=x[j]; i=j-1; while(x[i]>key && i>=0) x[i+1]=x[i]; i--; } x[i+1]=key;

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

ตัวอย่าง Function การเรียงแบบ Selection

ตัวอย่าง:Selection Sort 44 55 12 42 94 18 06 67 ตัวอย่าง:Selection Sort ข้อมูล 8 ตัวทำ 7 รอบ รอบที่ ข้อมูล 1 06 55 12 42 94 18 44 67 2 06 12 55 42 94 18 44 67 3 06 12 18 42 94 55 44 67 4 06 12 18 42 94 55 44 67 5 06 12 18 42 44 55 94 67 6 06 12 18 42 44 55 94 67 7 06 12 18 42 44 55 67 94

int main() { int A[ELEMENTS]={44,55,12,42,94,6,18,67}; int x; cout<<"NON SORTED LIST:"<<endl; for(x=0;x<ELEMENTS;x++) cout<<A[x]<<endl; } selection_sort(A,ELEMENTS); cout<<endl<<"SORTED LIST"<<endl; for(x=0;x< ELEMENTS;x++) return 0; #include <iostream.h> #define ELEMENTS 8 void selection_sort(int x[],int length) { int k,temp; for(int i=0;i<length;i++) k=i; for (int j=i+1;j< length;j++) if(x[j]< x[k]) k=j; } temp=x[i]; x[i]=x[k]; x[k]=temp;

LAB # 1 ให้นักศึกษาทำความเข้าใจกับรูปแบบ และวิธีการเรียงลำดับข้อมูล (Sorting) ทั้ง 3 แบบ และจงแก้ไขโปรแกรมเพื่อให้ได้ Output ทั้ง 3 ข้อที่กำหนดไว้

Insertion Sort แทรกจากข้างหลัง 44 55 12 42 94 18 06 67 Insertion Sort แทรกจากข้างหลัง ข้อมูล 8 ตัวทำ 7 รอบ Insert2.cpp รอบที่ ข้อมูล 2 44 55 12 42 94 18 06 67 3 44 55 12 42 94 06 18 67 4 44 55 12 42 06 18 67 94 5 44 55 12 06 18 42 67 94 6 44 55 06 12 18 42 67 94 7 44 06 12 18 42 55 67 94 8 06 12 18 42 44 55 67 94

Bubble Sort โดยการไล่จากหน้าไปหลัง 44 55 12 42 94 18 06 67 Bubble Sort โดยการไล่จากหน้าไปหลัง ข้อมูล 8 ตัวทำ 7 รอบ Bubble2.cpp รอบที่ ข้อมูล 1 44 12 42 55 18 06 67 94 2 12 42 44 18 06 55 67 94 3 12 42 18 06 44 55 67 94 4 12 18 06 42 44 55 67 94 5 12 06 18 42 44 55 67 94 6 06 12 18 42 44 55 67 94 7 06 12 18 42 44 55 67 94

Selection Sort เลือกตัวที่มีค่ามากที่สุดมาก่อน 44 55 12 42 94 18 06 67 Selection Sort เลือกตัวที่มีค่ามากที่สุดมาก่อน ข้อมูล 8 ตัวทำ 7 รอบ Select2.cpp รอบที่ ข้อมูล 1 44 55 12 42 67 18 06 94 2 44 55 12 42 06 18 67 94 3 44 18 12 42 06 55 67 94 4 06 18 12 42 44 55 67 94 5 06 18 12 42 44 55 67 94 6 06 12 18 42 44 55 67 94 7 06 12 18 42 44 55 67 94