ผสานแนวคิดอัลกอริทึมการเรียงลำดับ:
แบ่ง - พิชิต แต่ละกระบวนการแบบเรียกซ้ำเกี่ยวข้องกับสามขั้นตอน ขั้นแรก การสลายตัว: แยกลำดับขององค์ประกอบ n ที่จะเรียงลำดับออกเป็นสองลำดับย่อย แต่ละลำดับย่อยรวมถึงองค์ประกอบ n/2
ประการที่สอง การกำกับดูแล: เรียก MergeSort ในแต่ละลำดับย่อยแยกจากกัน และดำเนินการแบบเรียกซ้ำ ประการที่สาม ผสาน: รวมสองลำดับย่อยที่เรียงลำดับเพื่อสร้างผลลัพธ์การเรียงลำดับ
โมฆะคงที่สาธารณะ mergeSort (int [] a, int [] tmp, int ซ้าย, int ขวา) { ถ้า (ซ้าย < ขวา) { int กลาง = ซ้าย + (ขวา - ซ้าย) / 2; กลาง);// การเรียงลำดับทางซ้าย MergeSort(a, tmp, กลาง + 1, ขวา);// การเรียงลำดับทางขวา รวม (a, tmp, ซ้าย, กลาง + 1, ขวา);// ผสานซ้ายและขวา} } การผสานโมฆะสาธารณะ (int [] a, int [] tmp, int left, int rightPos, int right) { int leftEnd = rightPos - 1; int tmpPos = left; 1; while (ซ้าย <= leftEnd && rightPos <= ขวา) { if (a[left] < a[rightPos]) { tmp[tmpPos++] = a[left++]; } else { tmp[tmpPos++] = a[rightPos++] } } ในขณะที่ (ซ้าย <= leftEnd) { tmp[tmpPos++] = a[left++]; ] = a[rightPos++]; } สำหรับ (int i = 0; i < num; i++, right--) { a[right] = ทีเอ็มพี[ขวา] } }แผนผังของอัลกอริทึมการผสาน:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าทุกคนจะชอบมัน