1. คำอธิบายอัลกอริทึม
เลือกการเรียงลำดับ: ตัวอย่างเช่นในอาร์เรย์ที่ไม่มีการเรียงลำดับความยาว n, สำรวจข้อมูล n ในการเดินทางครั้งแรกค้นหาค่าที่เล็กที่สุดและแลกเปลี่ยนกับองค์ประกอบแรกการเดินทางครั้งที่สองสำรวจข้อมูล N-1 ที่เหลือค้นหาค่าที่เล็กที่สุดและแลกเปลี่ยนกับองค์ประกอบที่สอง
ข้อมูลที่ไม่มีการเรียงลำดับ 5 ต่อไปนี้ใช้เป็นตัวอย่าง:
56 12 80 91 20 (กระบวนการเลือกการเดินทางครั้งแรกนั้นได้รับการปรับปรุงในบทความเท่านั้น)
การเดินทางครั้งที่ 1: 12 56 80 91 20
การเดินทางครั้งที่ 2: 12 20 80 91 56
การเดินทาง 3: 12 20 56 91 80
การเดินทางครั้งที่ 4: 12 20 56 80 91
2. การวิเคราะห์อัลกอริทึม
ความซับซ้อนของเวลาเฉลี่ย: O (N2)
ความซับซ้อนของพื้นที่: O (1) (สำหรับการแลกเปลี่ยนและบันทึกดัชนี)
ความเสถียร: ไม่เสถียร (ตัวอย่างเช่น [5] และ [3] ครั้งแรกถูกแลกเปลี่ยนในการเดินทางครั้งแรกของลำดับ [5, 5, 3] ทำให้ 5 ครั้งแรกย้ายไปด้านหลัง 5 5)
3. การใช้อัลกอริทึม
การเลือกคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int len = 15; int [] ary = new int [len]; สุ่มสุ่ม = ใหม่สุ่ม (); สำหรับ (int j = 0; j <len; j ++) {ary [j] = random.nextint (1,000); } system.out.println ("------------------"); // ary = new int [] {10,9,8,7,6,5,5,4,3,2,1}; // ทดสอบการแลกเปลี่ยน // ary = new int [] {1,2,3,4,5,6,7,8,10,9}; // ทดสอบการแลกเปลี่ยนสำหรับ (int j = 0; j <ary.length; j ++) {system.out.print (ary [j]+""); } selectDesc (ary); Selectasc (ARY); }/ * * เลือกเรียงลำดับ: ลงมา */โมฆะคงที่ selectdesc (int [] ary) {int comparecount = 0; // เปรียบเทียบเวลา int angecount = 0; // จำนวนการแลกเปลี่ยน int len = ary.length; int maxvalueindex = -1; // บันทึกดัชนีค่าต่ำสุดหลังจากการเปรียบเทียบสำหรับ (int i = 0; i <len - 1; i ++) {maxValueIndex = i; // จาก 0 สำหรับ (int j = i+1; j <len; j ++) {ถ้า (ary [maxvalueindex] <ary [j]) {maxvalueindex = j; // บันทึกดัชนีขนาดใหญ่กว่า comparecount ++; }} // system.out.println ("minvalueindex ==" + maxvalueindex); if (maxvalueindex! = i) {// ถ้าดัชนีแตกต่างจากบันทึกทางด้านซ้ายแลกเปลี่ยน ary [i] = ary [maxvalueindex]+(ary [maxvalueindex] = ary [i]) * 0; - System.out.println ("/n ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - (int i = 0; i <len - 1; i ++) {minindex = i; ary [minindex]+(ary [minindex] = ary [i]) * 0; System.out.println ("/n -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- สำหรับ (int j = 0; j <ary.length; j ++) {system.out.print (ary [j]+""); -พิมพ์
- -