คลาสเครื่องมือสั้น ๆ และชัดเจนสรุปอัลกอริทึมการเรียงลำดับห้าของ Java: การเรียงลำดับอย่างรวดเร็วการเรียงลำดับฮิลล์การเรียงลำดับการเรียงลำดับการเรียงลำดับของกองและการเรียงลำดับ ไม่มีคำอธิบายสำหรับอัลกอริทึมการเรียงลำดับเหล่านี้ในรหัส ฉันหวังว่าจะตรวจสอบคำแนะนำที่เกี่ยวข้องสำหรับส่วนความคิดด้วยตัวเอง ที่นี่ฉันจะสรุปอัลกอริทึมเหล่านี้เพื่อให้ทุกคนใช้
การจัดเรียงระดับสาธารณะ {สาธารณะคงที่ <AnyyType ขยายการเปรียบเทียบ <? Super AnyType >> เป็นโมฆะ InsertionSort (AnyType [] A) {InsertionSort (A, 0, A.Length - 1); } private static <anythype ขยายเปรียบเทียบ <? Super AnyType >> การแทรกเป็นโมฆะ (anyType [] a, int ซ้าย, int ขวา) {int J; // บันทึกตำแหน่งของตัวเลขต่อไปนี้ขององค์ประกอบแรกที่เล็กกว่า tmp สำหรับ (int p = ซ้าย; p <= ขวา; p ++) {anyType tmp = a [p]; สำหรับ (j = p; j> ซ้าย && tmp.compareto (a [j - 1]) <0; j--) {a [j] = a [j - 1]; } a [j] = tmp; }} สาธารณะคงที่ <AnyType ขยายเทียบเคียงได้ <? super anyype >> void shellsort (anytype [] arr) {int j; สำหรับ (int gap = arr.length / 2; gap> 0; gap / = 2) {สำหรับ (int i = gap; i <arr.length; i ++) {anyType tmp = arr [i]; สำหรับ (j = i; j> = gap && tmp.compareto (arr [j - gap]) <0; j - = gap) {arr [j] = arr [j - gap]; } arr [j] = tmp; }}} int leftchild ส่วนตัว (int i) {return i * 2 + 1; } private static <anythype ขยายเปรียบเทียบ <? Super AnyType >> เป็นโมฆะ PerculatedOwn (anyType [] arr, int i, ขนาด int) {anyType tmp = arr [i]; สำหรับ (int child; (child = leftchild (i)) <size; i = child) {ถ้า (child! = size - 1 && arr [child] .compareto (arr [เด็ก+1]) <0) {เด็ก ++; } if (tmp.compareto (arr [child]) <0) {arr [i] = arr [child]; } else {break; }} arr [i] = tmp; } สาธารณะคงที่ <AnyyType ขยายเทียบเคียงได้ <? Super AnyType >> เป็นโมฆะ heapsort (anyType [] arr) {สำหรับ (int i = arr.length / 2; i> = 0; i--) {perculatorown (arr, i, arr.length); } สำหรับ (int i = arr.length-1; i> = 0; i--) {swapreferences (arr, 0, i); Perculated (arr, 0, i); }} ส่วนตัวคงที่ <AnyType ขยายเทียบเคียงได้ <? super anyype >> void swapreferences (anytype [] arr, int i, int j) {anyType tmp = arr [i]; arr [i] = arr [j]; arr [j] = tmp; } สาธารณะคงที่ <AnyyType ขยายเทียบเคียงได้ <? Super AnyType >> เป็นโมฆะ Mergesort (anyType [] arr) {anyType [] tmp = ((anyType []) ใหม่เปรียบเทียบ [arr.length]); Mergesort (arr, 0, arr.length - 1, tmp); } private static <anythype ขยายเปรียบเทียบ <? Super AnyType >> เป็นโมฆะ Mergesort (anyType [] arr, int start, int end, anyType [] tmp) {ถ้า (เริ่มต้น <สิ้นสุด) {int mid = (เริ่ม + สิ้นสุด) >> 1; Mergesort (arr, start, mid, tmp); Mergesort (arr, mid + 1, end, tmp); ผสาน (arr, start, mid, end, tmp); }} ส่วนตัวคงที่ <AnyType ขยายเทียบเคียงได้ <? Super AnyType >> Void Merge (anyType [] arr, int start, int mid, int end, anyType [] tmp) {int i = start, j = mid + 1, k = start; ในขณะที่ (i <= mid && j <= end) {ถ้า (arr [i] .compareto (arr [j]) <0) {tmp [k ++] = arr [i ++]; } else {tmp [k ++] = arr [j ++]; }} ในขณะที่ (i <= mid) {tmp [k ++] = arr [i ++]; } ในขณะที่ (j <= end) {tmp [k ++] = arr [j ++]; } สำหรับ (int m = start; m <= end; m ++) {arr [m] = tmp [m]; }} สาธารณะคงที่ <AnyType ขยายเทียบเคียงได้ <? Super AnyType >> เป็นโมฆะ Quicksort (AnyType [] arr) {Quicksort (arr, 0, arr.length - 1); } private static <anythype ขยายเปรียบเทียบ <? Super AnyType >> เป็นโมฆะ Quicksort (anyType [] arr, int ซ้าย, int ขวา) {ถ้า (ซ้าย + ความยาว _diff <= ขวา) {anyType pivot = medium (arr, ซ้าย, ขวา); int i = ซ้าย, j = ขวา; ในขณะที่ (จริง) {ในขณะที่ (arr [++ i] .compareto (pivot) <0); ในขณะที่ (arr [-j] .Compareto (pivot)> 0); ถ้า (i <j) {swapreferences (arr, i, j); } else {break; }} swapreferences (arr, i, ขวา); Quicksort (arr, ซ้าย, i - 1); Quicksort (arr, i + 1, ขวา); } else {insertionSort (arr, ซ้าย, ขวา); }} ส่วนตัวคงที่ <AnyType ขยายเทียบเคียงได้ <? Super AnyType >> Medium anyType (anyType [] arr, int ซ้าย, int ขวา) {int center = (ซ้าย + ขวา) / 2; if (arr [center] .compareto (arr [ซ้าย]) <0) {swapreferences (arr, center, ซ้าย); } if (arr [ซ้าย] .Compareto (arr [ขวา])> 0) {swapreferences (arr, ซ้าย, ขวา); } if (arr [center] .compareto (arr [ขวา]) <0) {swapreferences (arr, center, ขวา); } return arr [ขวา]; } ส่วนตัวสุดท้ายคงที่ int length_diff = 20;}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น