// TestSelectionSort.java ปรับปรุง : 2548-06-08 () // เคล็ด : ในคิวสลับกับบนสุด แล้วตรวจสอบในคิวหาตัวที่น้อยตัวต่อไป ทำไปจนหมด // โปรแกรมสำหรับ จัดเรียงข้อมูล แบบ Selection // หลักการทำงาน (การจัดเรียงต้องอธิบายด้วย step ของภาพ จึงจะเข้าใจได้โดยง่าย) // เก็บข้อมูลลงอาร์เรย์ให้หมดก่อน // กำหนด smallest เป็นตัวแรก คนหาในอาเรย์ว่าตัวใดน้อยที่สุด // เก็บเฉพาะตัวน้อยที่สุดมาแทนตัวแรก แล้วเริ่มตรวจสอบเหมือนเดิมตั้งแต่ตัวที่สองใหม่ // ทำไปจนหมดข้อมูล // เริ่มต้นนำ 51 ตรวจสอบกับ 46 ถ้าน้อยกว่าก็เก็บไว้ก่อน จะสลับต่อเมื่อตรวจสอบจนหมด ในแต่ละครั้ง // Selection Sort // Before : 51 46 14 35 22 // Swap : 14 46 51 35 22 // Swap : 14 22 51 35 46 // Swap : 14 22 35 51 46 // Swap : 14 22 35 46 51 // After : 14 22 35 46 51 // แหล่งอ้างอิง // http://www.thaiall.com/class // http://ww3.algorithmdesign.net/handouts/Selection.pdf // http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html // http://www.java2s.com/ExampleCode/Collections-Data-Structure/Sort-Search.htm // ปัญหาที่อาจพบ // ถ้า compile ทุกโปรแกรม แล้ว run ทีละโปรแกรม จะพบปัญหา SortingProcess ซ้ำกัน // แต่ถ้า compile และ run ทีละโปรแกรม จะไม่พบปัญหา เพราะปัญหาเกิดจาก SortingProcess ซ้ำกับในโปรแกรมอื่น // import java.lang.*; class SortingProcess { int temp,elems=0; Comparable ar[] = new Comparable[100]; public void insert(Comparable value) { ar[elems] = value; elems++; } private void swap(int m, int n) { Comparable temp = ar[m]; ar[m] = ar[n]; ar[n] = temp; } public void printresult(String txt) { System.out.print(txt); for(int i=0;i