บทความนี้ส่วนใหญ่แนะนำว่า Java บรรลุอัลกอริธึมการเรียงลำดับที่ใช้กันทั่วไปแปดประการ: การเรียงลำดับการเรียงลำดับการเรียงลำดับการเลือกการเรียงลำดับการเรียงลำดับเนินเขาการเรียงลำดับการเรียงลำดับการควบรวมกิจการลำดับการจัดเรียงและการเรียงลำดับฐาน LST
การจำแนกประเภท
1) แทรกการเรียงลำดับ (การเรียงลำดับโดยตรง, การเรียงลำดับฮิลล์)
2) แลกเปลี่ยนการเรียงลำดับ (การเรียงลำดับเดือด, การเรียงลำดับเร็ว)
3) เลือกการเรียงลำดับ (เลือกการเรียงลำดับโดยตรงเรียงลำดับ)
4) การเรียงลำดับ
5) การกระจายและการเรียงลำดับ (การเรียงลำดับพื้นฐาน)
พื้นที่เสริมที่จำเป็นมากที่สุด: พื้นที่เสริมที่สุดสำหรับการควบรวม
ไม่เสถียร: จัดเรียงอย่างรวดเร็วเรียงลำดับเขาเรียงลำดับเรียงซ้อนกัน
มาดูความสัมพันธ์ระหว่าง 8 การเรียงลำดับ:
1. แทรกการเรียงลำดับโดยตรง
(1) แนวคิดพื้นฐาน: ในชุดที่จะจัดเรียงสมมติว่า (n-1) [n> = 2] หมายเลขอยู่แล้ว
ตามลำดับตอนนี้หมายเลข NN จะถูกแทรกลงในลำดับก่อนหน้านี้เพื่อให้หมายเลข n นี้
มันเป็นไปตามลำดับ สิ่งนี้จะหมุนเวียนซ้ำ ๆ จนกว่าคำสั่งซื้อทั้งหมดจะเป็นไปตามลำดับ
(2) ตัวอย่าง
(3) ตระหนักด้วย Java
แพ็คเกจ com.njue; 17,18,23,34,15,35,25,53,51}; temp = a [i]; ทดสอบ;} สำหรับ (int i = 0; i <a.length; i ++) {system.out.println (a [i]);}}}}}}2. การเรียงลำดับฮิลล์ (การเรียงลำดับขั้นต่ำ)
(1) แนวคิดพื้นฐาน: จำนวนกลุ่มที่จะจัดเรียงโดยอัลกอริทึมแบ่งออกเป็นหลายกลุ่มตามจำนวนของการเพิ่มขึ้น D (n/2, n เป็นจำนวนที่จะเรียงลำดับ) และจัดเรียงแล้วใช้การเพิ่มขึ้นที่เล็กลง (d/2) เพื่อจัดกลุ่มแล้วแทรกการเรียงลำดับโดยตรงในแต่ละกลุ่ม เมื่อการเพิ่มขึ้นเป็น 1 การเรียงลำดับจะถูกแทรกโดยตรงและการเรียงลำดับเสร็จสิ้น
(2) ตัวอย่าง:
(3) ตระหนักด้วย Java
Publicclass Shellsort {Publicshellsort () {int a [] = {1,54,3,78,34,12,45,56,100}; .CEIL (D1/2); ) {int j = id; j+d] = temp;}} ถ้า (d == 1) {break;} สำหรับ (int i = 0; i <a.length; i ++) {system.out.println (a [i]);} }}3. การเลือกแบบง่าย ๆ ของการเรียงลำดับ
(1) แนวคิดพื้นฐาน: ในกลุ่มที่จะจัดเรียงให้เลือกจำนวนตัวเลขที่น้อยที่สุดและตำแหน่งแรก
จากนั้นค้นหาจำนวนตำแหน่งที่น้อยที่สุดในจำนวนที่เหลือเพื่อให้ลูปเปรียบเทียบกับจำนวนสุดท้ายของหมายเลขสุดท้ายและหมายเลขสุดท้าย
(2) ตัวอย่าง:
(3) ตระหนักด้วย Java
คลาสสาธารณะ SelectSort {Public SelectSort () {int a [] = {1,54,3,78,34,12,45}}; ) {int j = i+1; J]; ฉัน] );}}4. การเรียงลำดับกอง
(1) แนวคิดพื้นฐาน: การจัดเรียงการบรรจุคือการเลือกรูปแบบต้นไม้ซึ่งเป็นการปรับปรุงที่มีประสิทธิภาพของการเลือกการเรียงลำดับโดยตรง
คำจำกัดความของกองมีดังนี้: ลำดับ (h1, h2, ... , hn) ที่มีองค์ประกอบ n และเป็นที่พอใจเท่านั้น (hi> = h2i, hi> = 2i+1) หรือ (hi <= h2i, สวัสดี <= 2i 2i) +1) (i = 1,2, ... , n/2) เรียกว่ากอง ที่นี่เราจะหารือเฉพาะกองที่ตรงตามเงื่อนไขของอดีต มันสามารถเห็นได้จากคำจำกัดความของกองว่าองค์ประกอบด้านบน (นั่นคือองค์ประกอบแรก) จะต้องเป็นรายการที่ใหญ่ที่สุด (การถ่ายโอนข้อมูลขนาดใหญ่) ต้นไม้ไบนารีที่สมบูรณ์สามารถแสดงโครงสร้างของกองได้อย่างสังหรณ์ใจ ด้านบนของเสาเข็มนั้นถูกหยั่งรากและส่วนอื่น ๆ จะเป็นทรีย่อยและทรีย่อยด้านขวา ในขั้นต้นลำดับที่จะเรียงลำดับถือเป็นต้นไม้ไบนารีที่เก็บไว้ในลำดับปรับลำดับการจัดเก็บของพวกเขาเพื่อให้พวกเขากลายเป็นกอง จากนั้นแลกเปลี่ยนโหนดรูทด้วยโหนดสุดท้ายของกอง จากนั้นปรับหมายเลขก่อนหน้า (N-1) อีกครั้งเพื่อให้มันเป็นกอง ตามประเภทนี้จนกว่าจะมีเพียงสองโหนดและแลกเปลี่ยนและในที่สุดก็ได้รับลำดับของโหนด n อย่างเป็นระเบียบ จากมุมมองของคำอธิบายอัลกอริทึมการจัดลำดับการจัดเรียงแบบซ้อนต้องการสองกระบวนการ ดังนั้นจึงมีองค์ประกอบสองฟังก์ชั่นของการเรียงลำดับฮีป หนึ่งคือฟังก์ชั่นการเจาะของกองและอื่น ๆ คือเรียกฟังก์ชันการแทรกซึมซ้ำ ๆ เพื่อใช้ฟังก์ชันการเรียงลำดับ
(2) ตัวอย่าง:
ลำดับเริ่มต้น: 46,79,56,38,40,84
การก่อสร้าง:
แลกเปลี่ยน, เตะจำนวนสูงสุดจากกอง
โหนดที่เหลือจะถูกสร้างขึ้นอีกครั้งและมีการแลกเปลี่ยนจำนวนสูงสุด
พุชตามลำดับ: สองโหนดสุดท้ายในกองสุดท้ายของสองโหนดสุดท้ายถูกแลกเปลี่ยนหนึ่งถูกเตะออกและการเรียงลำดับเสร็จสิ้น
(3) ตระหนักด้วย Java
นำเข้า Java.util.Arrays; , 15,35,25,53,51}; ความยาว; 0, arraylength-i); System.out.println (arrays.toString (a));}} การแลกเปลี่ยนโมฆะส่วนตัว (int [] ข้อมูล, int i, int j, int j, int j) {// todo auto- auto- วิธีการ goneralted stub int tmp = data [i]; ) {// todo method auto-gonement stub // โหนดหลักของโหนด (โหนดสุดท้าย) จาก LastIndex เริ่มต้นสำหรับ (int i = (lastIndex-); i> = 0; i-) {// k บันทึกโหนด int k = i; BiggerIndex นั้นเล็กกว่า LastIndex นั่นคือโหนดที่ถูกต้องของโหนด K ที่แสดงถึงโหนด K ที่แสดงโดย BiggerIndex+1 มีอยู่ถ้า (BiggerIndex <LastIndex) {// ถ้าค่าของโหนดขวามีขนาดใหญ่กว่า (data [biggerIndex ] <data [biggerIndex+1]) {// biggerIndex มักจะบันทึกดัชนี BiggerIndex ++;} // ถ้าค่าของโหนด K น้อยกว่าค่าของโหนด K ถ้า (data [data [data [data K ] <data [BiggerIndex]) {// แลกเปลี่ยนการแลกเปลี่ยน (ข้อมูล, K, BiggerIndex); มากกว่าค่าของโหนดซ้ายและขวา5. การเรียงลำดับฟอง
(1) แนวคิดพื้นฐาน: ในกลุ่มที่จะจัดเรียงตัวเลขทั้งหมดภายในขอบเขตที่ยังไม่ได้ออกการเปรียบเทียบและการปรับของสองตัวเลขที่อยู่ติดกันทั้งสองจากบนลงล่าง นั่นคือ: เมื่อเปรียบเทียบกับตัวเลขสองตัวที่อยู่ติดกันพวกเขาพบว่าข้อกำหนดการเรียงลำดับและการเรียงลำดับของพวกเขานั้นตรงกันข้ามและพวกเขาจะแลกเปลี่ยน
(2) ตัวอย่าง:
(3) ตระหนักด้วย Java
Bubblesort ระดับสาธารณะ {publicbbitsort () {inta [] = {49,38,65,97,76,13,49,78,34,5,4,62,98,54,54,56, 17,18,23 , 34,15,35,25,53,51}; ความยาว 1-i; +1] = temp;}}} สำหรับ (int i = 0; i <a.length; i ++) {system.out.println (a [i]);}}6. จัดเรียงอย่างรวดเร็ว
(1) แนวคิดพื้นฐาน: เลือกองค์ประกอบมาตรฐานมักจะเลือกองค์ประกอบแรกหรือองค์ประกอบสุดท้าย องค์ประกอบมาตรฐาน
(2) ตัวอย่าง:
(3) ตระหนักด้วย Java
Publicclass Quicksort {inta [] = {49,38,65,97,76,13,27,78,34,264,5,4,99,98,54,56,17,18,18,34,15,35,25,99,98,54,54,54,56,17,18,18,18,18,18,18,18,18,18,17, , 53,51}; [] รายการ, int ต่ำ) {int tmp = list [ต่ำ]; High-;} รายการ [ต่ำ] = รายการ [สูง]; [สูง] = รายการ [ต่ำ]; int ต่ำ, int สูง) {ถ้า (ต่ำ <สูง) {int middle = getMiddle (รายการ, ต่ำ, สูง); การเรียงลำดับของ Tables _quicksort (รายการ, กลาง + 1, สูง); อาร์เรย์คือ empty_quicksort (a2,0, a2.length -1);}}}}7. ผสานการเรียงลำดับ
(1) การเรียงลำดับขั้นพื้นฐาน: วิธีการเรียงลำดับ (ผสาน) คือการรวมรูปแบบสอง (หรือมากกว่า) หรือมากกว่าเข้ากับคำสั่งใหม่นั่นคือคำนำ จากนั้นรวมลำดับการสั่งซื้อไว้ในลำดับโดยรวม
(2) ตัวอย่าง:
(3) ตระหนักด้วย Java
นำเข้า Java.util.Arrays; , 15,35,25,53,51}; (a [i]);} publicvoid sort (int [] ข้อมูล, int ซ้าย, int ขวา) {// toDo-goneraltedmethod stub ถ้า (ซ้าย <ขวา) { / / / ค้นหาดัชนีระดับกลาง int center = (ซ้าย+ขวา) /2; ;}} PublicVoid Merge (int [] ข้อมูล, int ซ้าย, int center, int ขวา) {// toDo-goneorates int [data.length]; โครงการ Int Middle Array = ซ้าย; ]) {tmparr [สาม ++] = ข้อมูล [ซ้าย ++];} else {tmparr [สาม ++] = ข้อมูล [mid ++]; ++];} ในขณะที่ (ซ้าย <= กึ่งกลาง) {tmparr [สาม ++] = ข้อมูล [ซ้าย ++]; println (array.toString (data));8. การเรียงลำดับฐาน
(1) แนวคิดพื้นฐาน: สม่ำเสมอค่าการเปรียบเทียบทั้งหมด (จำนวนเต็มบวก) ถึงความยาวจำนวนเท่ากันและจำนวนหลักสั้น ๆ จะถูกสร้างขึ้นก่อนศูนย์ จากนั้นเริ่มต้นจากตำแหน่งต่ำสุดและการเรียงลำดับในทางกลับกัน สิ่งนี้จะกลายเป็นลำดับที่เป็นระเบียบจากตำแหน่งต่ำสุดไปจนถึงการเรียงลำดับบิตสูงสุด
(2) ตัวอย่าง:
(3) ตระหนักด้วย Java
นำเข้า java.util.arraylist; นำเข้า java.util.list; , 54,101,56,17,18,23,34,15,35,25,53,51}; {System.out.println (a [i]);}} การเรียงลำดับโมฆะสาธารณะ (int [] อาร์เรย์) {// ก่อนกำหนดจำนวนการจัดเรียงทริป; <Array.length; เวลา ++;} // สร้าง 10 คิว; ins> (); <อาเรย์; int) Math.pow (10, I 10, I); 0; = queue.get (k);ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้