การจัดเรียง (Sort)
การเรียงลำดับข้อมูล (Sorting)

การเรียงลำดับข้อมูล (Sorting) คือ การนำชุดข้อมูลมาดำเนินการประมวลผลให้ได้ชุดข้อมูลใหม่ที่มีการจัดเรียงใหม่ ซึ่งผลการจัดเรียงอาจเรียงข้อมูลจากน้อยไปมาก (Ascending) หรือมากไปน้อย (Descending)

อาร์เรย์ (Array) หรือแถวลำดับ คือ การรวมกลุ่มของตัวแปรที่สามารถใช้ตัวแปร ชื่อเดียวกันแทนข้อมูลสมาชิกได้หลายตัวในคราวเดียว ด้วยการใช้เลขดรรชนี (Index) หรือซับสคริปต์ (Subscipt) เป็นตัวอ้างอิงตำแหน่งสมาชิกบนแถวลำดับนั้น [3]p.80

+ sort_sample.xlsx
+ https://en.wikipedia.org/wiki/Sorting_algorithm
อธิบายเรื่องยกกำลัง และ log เพิ่มเติม [3]p.59
ถ้ามีข้อมูล 10 ตัว ก็จะได้ n = 10
กรณีที่ 1 : linear loops
for(i = 0; i<n; i++) ...
ได้ O(n)

กรณีที่ 2 : nested loops
for(i = 0; i<n; i++) ...
for(j = 0; j<n; j++) ...
ได้ O(n2)

กรณีที่ 3 : logarithmic loops
for(i = 0; i<n; i*=2) ...
ได้ O(log n)

กรณีที่ 4 : nested loops
for(i = 0; i<n; i++) ...
for(j = 0; j<n; j*=2) ...
ได้ O(n log n)
ประสิทธิภาพของการเรียงลำดับข้อมูล 
หรือ BigO ของการจัดเรียงข้อมูลแต่ละแบบ [3]p.334
1. แบบ Selection Sort คือ O(n2)
2. แบบ Heap Sort คือ O(n log n)
3. แบบ Insertion Sort คือ O(n2)
4. แบบ Bubble Sort คือ O(n2)
5. แบบ Quick Sort คือ O(n log n)
6. แบบ Merge Sort คือ O(n log n)
เทียบเวลาการทำงานของฟังก์ชันเมื่อส่งค่า 50 หรือ 100 ข้อมูล [3]p.64
ลำดับฺBigOf(50)f(100)
1O(logn)5.646.64
2O(n)50100
3O(nlogn)282664
4O(n2)250010,000
5O(n3)12,500100,000
6O(2n)1.126 * 10151.27 * 1030
7O(n!)3.0 * 10649.3 * 10157
factorial คือ ผลคูณของจำนวนเต็มบวกทั้งหมดที่น้อยกว่าหรือเท่ากับ n
สามารถเขียนแทนด้วย n!
Flash กับ Arrow
รหัสต้นฉบับด้วยภาษาจาวา 10 แบบ
- แบบ 1 Bubble Sort(2dim)
- แบบ 2 Selection Sort
- แบบ 3 Insertion Sort
- แบบ 4 Binary Sort
- แบบ 5 Bucket Sort
- แบบ 6 Quick Sort
- แบบ 7 Shell Sort
- แบบ 8 Merge Sort
- แบบ 9 Radix Sort #
- แบบ 10 Heap Sort #
- จัดเรียง 3 แบบ main + Dyn
- แนวคิด sorting (Applet) ubc.ca # 
 

Algorithm : การจัดเรียงแบบ Bubble sort ด้วยภาษา Pascal [3]p.319
procedure bubbleSort( A : list of sortable items )
   n = length(A)
   repeat 
     swapped = false
     for i = 1 to n-1 inclusive do
       /* if this pair is out of order */
       if A[i-1] > A[i] then
         /* swap them and remember something changed */
         swap( A[i-1], A[i] )
         swapped = true
       end if
     end for
   until not swapped
end procedure
+ https://en.wikipedia.org/wiki/Bubble_sort
คลิ๊กสอนการจัดเรียง
เอกสารฉบับเต็ม (Full Text)

รศ.ดร.สมชาย ประสิทธิ์จูตระกูล

Bruno R. Preiss

Mark Allen Weiss

William H. Ford

DB: พัฒณืรพี

Michael Mcmillan
เอกสารอ้างอิง (Reference)
[1] นิรุธ อำนวยศิลป์, "โครงสร้างข้อมูล : การเขียนโปรแกรมและการประยุกต์", บริษัท ดวงกมลสมัย จำกัด., กรุงเทพฯ, 2548.
[2] Guy J.Hale, Richard J.Easton, "Applied Daa Structures Using Pascal", D.C.Heath and Company. Canada. 2530.
[3] โอภาส เอี่ยมสิริวงศ์, "โครงสร้างข้อมูล (Data Structures) เพื่อการออกแบบโปรแกรมคอมพิวเตอร์", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2549.
[4] วิวัฒน์ อภิสิทธิ์ภิญโญ, อมร มุสิกสาร, "โครงสร้างข้อมูล (Data Structures)", บริษัท เอ-บุ๊ค ดิสทริบิวชั่น จำกัด., กรุงเทพฯ, 2548.
[5] เนรมิต ชุมสาย ณ อยุธยา, "เรียนรู้โครงสร้างข้อมูลและอัลกอริทึมด้วย Java", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2550.
[6] ขนิษฐา นามี, "โครงสร้างข้อมูลและอัลกอริทึม", บริษัท ไอดีซี อินโฟ ดิสทริบิวเตอร์ เซ็นเตอร์ จำกัด., กรุงเทพฯ, 2548.
[7] Michael McMillan, "Data Structures and Algorithms with JavaScript", O’Reilly Media, Inc., USA., 2014.
[8] Loiane Groner, "Learning JavaScript Data Structures and Algorithms", Packt Publishing, 2014.


"Imagination is more important than knowledge" - Albert Einstein
http://goo.gl/72BPC