Recommended
หลักการดูข้อมูลทางบรรณานุกรม
วิทยาการคำนวณ ม.5 - บทที่ 3 การวิเคราะห์ข้อมูล
แผนการจัดการเรียนรู้ Active Learning เรื่อง กราฟิกเพื่อการสื่อสาร
หน้าปก บทคัดย่อ สารบัญ ภาคผนวก บรรณานุกรม Is
ชุดการเรียนรู้ พัฒนาความคิดสร้างสรรค์เรื่อง ซากดึกดำบรรพ์ โดยครูกอบวิทย์ พิร...
บทที่ 2 การเป็นผู้ประกอบการ
ความสัมพันธ์ระหว่าง ความต่างศักย์ไฟฟ้า กระแสไฟฟ้า และ ความต้านทานไฟฟ้า
โครงสร้างและหน้าที่ของราก
การตอบสนองต่อสิ่งเร้าของพืช
สรุปความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
การเรียงข้อมูลแบบMerge sort นันทนา เนื่องมัจฉา
More Related Content
หลักการดูข้อมูลทางบรรณานุกรม
What's hot (20) วิทยาการคำนวณ ม.5 - บทที่ 3 การวิเคราะห์ข้อมูล
แผนการจัดการเรียนรู้ Active Learning เรื่อง กราฟิกเพื่อการสื่อสาร
หน้าปก บทคัดย่อ สารบัญ ภาคผนวก บรรณานุกรม Is
ชุดการเรียนรู้ พัฒนาความคิดสร้างสรรค์เรื่อง ซากดึกดำบรรพ์ โดยครูกอบวิทย์ พิร...
บทที่ 2 การเป็นผู้ประกอบการ
ความสัมพันธ์ระหว่าง ความต่างศักย์ไฟฟ้า กระแสไฟฟ้า และ ความต้านทานไฟฟ้า
โครงสร้างและหน้าที่ของราก
การตอบสนองต่อสิ่งเร้าของพืช
สรุปความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
Viewers also liked (20) การเรียงข้อมูลแบบMerge sort นันทนา เนื่องมัจฉา
การวิเคราะห์อัลกอริทึม(algorithm analysis)
อัลกอริทึมและการวิเคราะห์ปัญหา
การค้นหาข้อมูล (searching)
สแตกและคิว (Stack & queue)
บทที่2 โครงสร้างข้อมูลอาร์เรย์
ความรู้เบื้องต้นเกี่ยวกับอัลกอริทึม
โครงสร้างข้อมูลแบบลิงค์ลิสต์ (linklist)
การประมวลผลด้วยคอมพิวเตอร์
68 การนับและความน่าจะเป็น ตอนที่3_การจัดหมู่
MongoDB: Advance concepts - Replication and Sharding
Similar to การจัดเรียงข้อมูล (sorting) (20) (Big One) C Language - 10 เทคนิคอัลกอริทึมแบบ divide-and-conquer
การแก้ปัญหาด้วยกระบวนการเทคโนโลยีสารสนเทศ
บทที่ 1 แนวคิดทั่วไปเกี่ยวกับฐานข้อมูล
ความรู้เบื้องต้นเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
นางสาว อรอนงค์ สุขาวรรณ ม.5 เลขที่ 16 com
More from tumetr (20) ขั้นตอนการสร้าง Facebook page
ตั้งรับ ขับเคลื่อนธุรกิจและผลักดันคนไอทีไทยสู่-Aec-2015
The system-analysis-and-design
การพัฒนาและติดตั้งระบบ(System implementation)
ส่วนจัดการสื่อประสานผู้ใช้(User interface-management)
An approach-to-planning-software-projects
ทรัพยากรมนุษย์และการออกแบบงาน
กลยุทธ์การเลือกทำเลที่ตั้งสถานประกอบการ
กลยุทธ์การวางผังสถานประกอบการ
หน่วยที่ 5.3.2 การสุขาภิบาลอาหาร
หน่วยที่ 5.3.1 สารปนเปื้อนในอาหาร
หน่วยที่ 5.2 ผลิตภัณฑ์อาหารเพื่อสุขภาพ
โครงสร้างข้อมูลแบบ กราฟ (Graph)
การจัดเรียงข้อมูล (sorting)2. การจัดเรียงข้อมูล (Sorting)
การจัดเรียงลำาดับ (Sorting) หมายถึง การจัดเรียงข้อมูลให้
เรียงลำาดับตามเงื่อนไขที่กำาหนดไว้ โดยอาจเรียงจากน้อยไป
มาก หรือค่ามากไปน้อยก็ได้ การเรียงลำาดับข้อมูลในระบบ
คอมพิวเตอร์ จะแบ่งเป็น 2 ลักษณะใหญ่ ๆ คือ
1. การเรียงลำาดับข้อมูลภายใน (Internal sorting)
ใช้กับข้อมูลที่มีจำานวนไม่ใหญ่กว่าเนื้อที่ในหน่วยความจำา (main
memory)
ไม่ต้องใช้หน่วยความจำาสำารอง เช่น ดิสก์, เทป เป็นต้น
2. การเรียงลำาดับข้อมูลภายนอก (External sorting)
ใช้กับข้อมูลที่มีจำานวนใหญ่เกินกว่าที่จะเก็บลงในหน่วยความจำาได้
4. Insertion Sort
การจัดเรียงแบบแทรก คือ การเรียงข้อมูลโดยนำา
ข้อมูลที่จะทำาการจัดเรียงนั้นๆ ไปจัดเรียงทีละตัว
โดยการแทรกตัวที่จะเรียงไว้ในตำาแหน่งที่เหมาะสม
ของข้อมูลที่มีการจัดเรียงเรียบร้อยแล้ว ณ ตำาแหน่ง
ที่ถูกต้อง
6. Shell Sort
การจัดเรียงแบบเชลล์ เป็นการจัดเรียงที่อาศัยเทคนิค
การแบ่งข้อมูลออกเป็นกลุ่มย่อยหลายๆ กลุ่ม แล้วจัด
เรียงข้อมูลในกลุ่มย่อยๆ นั้น หลังจากนั้นก็ให้รวม
กลุ่มย่อยๆ ให้ใหญ่ขึ้นเรื่อยๆ ขั้นสุดท้ายให้จัดเรียง
ข้อมูลทั้งหมดนั้นอีกครั้ง
8. Shell Sort
ขั้นตอน
โดยทั่วไปการเลือกค่า K ตัวแรกมักจะเลือกใช้ค่า
เท่ากับครึ่งหนึ่งของข้อมูล เช่น ข้อมูลมี 10 ตัว K =
n/2 = 10/2 = 5
เรียงข้อมูลทุกตัวให้เสร็จสิ้น แล้วกำาหนดค่า K ใหม่
(โดยทั่วไปจะเป็นครึ่งหนึ่งของค่า K ตัวแรก เช่น K1
= 5; K2 = 5/2 = 2)
ถ้า K > 1 ให้ทำาซำ้า จนกระทั่งเหลือข้อมูลกลุ่มเดียว
12. Selection Sort
การจัดเรียงแบบเลือก เป็นวิธีการเรียงข้อมูลโดยจะ
เริ่มต้นค้นหาข้อมูลตัวที่น้อยที่สุดจากข้อมูลที่มีอยู่
ทั้งหมด แล้วสลับที่ข้อมูลกับตัวแรก แล้วกลับไปหา
ข้อมูลตัวที่น้อยที่สุดในกองต่อไปสลับที่กับข้อมูล
จนกว่าจะหมดกอง
18. Quick Sort
การจัดเรียงแบบควิกซ์ ใช้หลักการ divide-and-
conquer อาศัยการจัดแบ่งข้อมูลทั้งหมดออกเป็น 2
กลุ่ม โดยกลุ่มแรกจะเป็นกลุ่มของข้อมูลที่มีค่าน้อย
กว่าค่ากลางที่กำาหนด และส่วนที่สองเป็นกลุ่มของ
ข้อมูลที่มีค่ามากกว่าค่ากลางที่กำาหนด หลังจากนั้น
แบ่งข้อมูลแต่ละส่วนออกเป็น 2 ส่วนเช่นเดิม แบ่งไป
เรื่อยๆจนไม่สามารถแบ่งได้ก็จะได้ข้อมูลที่เรียงกัน
20. Quick Sort
การแบ่งส่วนข้อมูลใช้หลักการ Picking the pivot คือการ
กำาหนดค่าสมมุติที่อยู่ตรงกลาง โดยจะเลือกข้อมูลที่
อยู่ตรงกลางของข้อมูลทั้งหมด มาใช้เป็นค่ากึ่งกลาง
ดังนั้น ข้อมูลอื่นๆที่มีค่ามากกว่าค่าที่อยู่ตรงกลางจะ
อยู่กลุ่มทางขวามือ ค่าที่น้อยกว่าจะอยู่กลุ่มทางซ้าย
มือ
21. Quick Sort
>
ถ้าข้อมูล < Pivot แล้ว
SortLeft=SortLeft+1
สลับ Pivot กับ
ข้อมูลตัวที่ SortLeft-1
ถ้าข้อมูล >= Pivot แล้ว
SortRight=SortRight-1
23. Merge Sort
การเรียงแบบผสาน (Merge Sort ) -- การทำา
Merge Sort ใช้หลักการ divide-and-conquer
เหมือนกับ Quick Sort มีลักษณะของการแบ่งข้อมูล
ออกเป็นส่วนๆ แต่กระบวนการเรียงข้อมูลนั้นจะแตก
ต่างไปจาก Quick sort Quick sort กระทำาการ
สลับข้อมูลไปพร้อมกับการแบ่งข้อมูลออกเป็นส่วนๆ
แต่ merge sort นี้ กระทำาการแบ่งข้อมูลออกเป็น
ส่วนๆก่อน แล้วค่อยเรียงข้อมูลในส่วนย่อย จากนั้น
25. Radix Sort
การเรียงลำาดับแบบฐาน -- เป็นการเรียงลำาดับโดยการพิจารณา
ข้อมูลทีละหลัก
1. เริ่มพิจารณาจากหลักที่มีค่าน้อยที่สุดก่อน นั่นคือถ้าข้อมูล
เป็นเลขจำานวนเต็มจะพิจารณาหลักหน่วยก่อน
2. การจัดเรียงจะนำาข้อมูลทีละตัว แล้วนำาไปเก็บไว้ที่ซึ่งจัดไว้
สำาหรับค่านั้น เป็นกลุ่มๆ ตามลำาดับการเข้ามา
3. ในแต่ละรอบเมื่อจัดกลุ่มเรียบร้อยแล้ว ให้รวบรวมข้อมูลจาก
ทุกกลุ่มเข้าด้วยกัน โดยเริ่มเรียงจากกลุ่มที่มีค่าน้อยทีสุดก่อน
แล้วเรียงไปเรื่อยๆ จนหมดทุกกลุ่ม
4. ในรอบต่อไปนำาข้อมูลทั้งหมดที่ได้จัดเรียงในหลักหน่วย
27. การวัดประสิทธิภาพ
Big-O
เป็นตัวบอกระดับความซับ
ซ้อนของอัลกอริธึมนั้น ซึ่ง
จะแสดงให้เห็น
ประสิทธิภาพของอัลกอริธึ
มนั้น
Number ofLoops
n
StraightInsertion
StraightSelection
Bubble
Shell Heap
Quick
25 625 55 116
100 10,000 316 664
500 250,000 2,364 4,482
1,000 1,000,000 5,623 9,965
2,000 4,000,000 13,374 10,985
28. การวัดประสิทธิภาพ
void insertion_sort(int data[], int num_elts)
{
int i, j;
for (i=0; i<num_elts; i++)
for (j=i; (j>0) && (data[j] < data[j-1]); j--)
swap(data, j, j-1);
} /* insertion_sort */
void swap(int data[], int a, int b)
{ int temp;
temp = data[a];
data[a] = data[b];
data[b] = temp;
} /* swap */
Big-O =
n2
29. การวัดประสิทธิภาพ
void selection_sort(int data[], int num_elts)
{
int i, j, lowindex;
for (i=0; i<num_elts; i++) /* Select i'th record */
{ lowindex = i; /* Remember its index */
for (j=num_elts-1; j>i; j--) /* Find the least value */
if (data[j] < data[lowindex])
lowindex = j; /* Put it in place */
if (i != lowindex) /* To reduce swap() operation */
swap(data, i, lowindex);
}
} /* selection_sort */
void swap(int data[], int a, int b)
{ int temp;
temp = data[a];
data[a] = data[b];
data[b] = temp;
} /* swap */
Big-O =
n2
30. การวัดประสิทธิภาพ
void bubble_sort(int data[], int num_elts)
{
int i, j;
for (i=0; i<num_elts; i++)
for (j=num_elts-1; j>i; j--)
if (data[j] < data[j-1])
swap(data, j, j-1);
} /* bubble_sort */
void swap(int data[], int a, int b)
{ int temp;
temp = data[a];
data[a] = data[b];
data[b] = temp;
} /* swap */
Big-O =
n2