ตัวอย่างในบทความนี้แบ่งปันรหัสเฉพาะของการจัดเรียง Java และอัลกอริทึมการแต่งเพลงสำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
แพ็คเกจ beanutil; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า com.work.core.exception.ourexception;/** * สถิติการรวมกันของโอกาสมากที่สุดของการเกิดขึ้นของสาม * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * อัลกอริทึม // แนวคิดของโปรแกรมนี้คือการเปิดอาร์เรย์และตัวห้อยแสดงถึงหมายเลข 1 ถึง m ค่าขององค์ประกอบอาร์เรย์คือ 1 เพื่อระบุตัวห้อย // หมายเลขที่แสดงได้ถูกเลือกและถ้าเป็น 0 ก็ไม่ได้เลือก // ครั้งแรกเริ่มต้นตั้งค่าองค์ประกอบ N แรกของอาร์เรย์เป็น 1 แสดงว่าชุดแรกคือหมายเลข N แรก // จากนั้นสแกนการรวมกัน "10" ของค่าองค์ประกอบอาร์เรย์จากซ้ายไปขวาค้นหาการรวมกัน "10" ครั้งแรกและเปลี่ยนเป็นชุดค่าผสม // "01" และย้ายทั้งหมด "1" ทางซ้ายไปทางซ้ายไปทางซ้ายสุดของอาร์เรย์ // เมื่อ "1" แรกย้ายไปยังตำแหน่ง MN ของอาร์เรย์นั่นคือเมื่อ N "1S ทั้งหมด" ย้ายไปทางขวาสุดคุณต้อง // ไปที่ชุดสุดท้าย // ตัวอย่างเช่นค้นหาการรวมกันของ 3 ใน 5: // 1 1 1 0 0 // 1,2,3 // 1 1 0 1 0 // 1,2,4 // 1 0 1 1 0 // 1,3,4 // 0 1 1 1 1 0 // 2,3,4 // 0 1 0 1 // 0 1,5 1 // 1,4,5 // 0 1 0 1 1 1 // 2,4,5 // 0 0 1 1 1 1 // 3,4,5 โมฆะสาธารณะคงที่หลัก (สตริง [] args) {copy_2_of_statisanythree s = new Copy_2_of_statisanythree (); s.printanythree (); } / ** * * / โมฆะสาธารณะ printanythree () {int [] num = new int [] {1,2,3,4,5,5,6}; พิมพ์ (รวม (num, 3)); } / ** * เลือกหมายเลข m จาก n ตัวเลข * @param a * @param m * @return * / รายการสาธารณะรวม (int [] a, int m) {int n = a.length; if (m> n) {โยน ulyexception ใหม่ ("ข้อผิดพลาด! มีเพียงองค์ประกอบ"+n+"ในอาร์เรย์ a."+m+"มากกว่า" +2+"!!!"); } รายการผลลัพธ์ = new ArrayList (); int [] bs = new int [n]; สำหรับ (int i = 0; i <n; i ++) {bs [i] = 0; } // เริ่มต้นสำหรับ (int i = 0; i <m; i ++) {bs [i] = 1; } ธงบูลีน = true; บูลีน tempflag = false; int pos = 0; int sum = 0; // ก่อนอื่นให้ค้นหาชุดค่าผสม 10 ครั้งแรกจากนั้นจะกลายเป็น 01 และในเวลาเดียวกันย้าย 1s ทั้งหมดทางด้านซ้ายไปทางซ้ายสุดของอาร์เรย์ทำ {sum = 0; pos = 0; tempflag = true; result.add (พิมพ์ (bs, a, m)); สำหรับ (int i = 0; i <n-1; i ++) {ถ้า (bs [i] == 1 && bs [i+1] == 0) {bs [i] = 0; bs [i+1] = 1; pos = i; หยุดพัก; }} // ย้าย 1 ทั้งหมดทางด้านซ้ายไปทางด้านซ้ายสุดของอาร์เรย์สำหรับ (int i = 0; i <pos; i ++) {ถ้า (bs [i] == 1) {sum ++; }} สำหรับ (int i = 0; i <pos; i ++) {ถ้า (i <sum) {bs [i] = 1; } else {bs [i] = 0; }} // ตรวจสอบว่า 1s ทั้งหมดย้ายไปทางด้านขวาสุดของอาร์เรย์สำหรับ (int i = nm; i <n; i ++) {ถ้า (bs [i] == 0) {tempflag = false; หยุดพัก; }} if (tempflag == false) {flag = true; } else {flag = false; }} ในขณะที่ (ธง); result.add (พิมพ์ (bs, a, m)); ผลการกลับมา; } private int [] print (int [] bs, int [] a, int m) {int [] result = new int [m]; int pos = 0; สำหรับ (int i = 0; i <bs.length; i ++) {ถ้า (bs [i] == 1) {ผลลัพธ์ [pos] = a [i]; POS ++; }} ผลการส่งคืน; } การพิมพ์โมฆะส่วนตัว (รายการ l) {สำหรับ (int i = 0; i <l.size (); i ++) {int [] a = (int []) l.get (i); สำหรับ (int j = 0; j <a.length; j ++) {system.out.print (a [j]+"/t"); } system.out.println (); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น