บทความนี้สรุปอัลกอริทึมการเรียงลำดับต่าง ๆ ใน Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
1. การเรียงลำดับฟอง:
คลาสสาธารณะ sorttest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,456,78, -1,78 , 78,32,444,345}; {สำหรับ (int j = 0; j <a.length-i-1; j ++) {ถ้า (a [j]> a [j+1]) {int tmp = a [j]; [J+1];
2. การเรียงลำดับด่วน (ไม่มีค่าที่ซ้ำกัน):
Public Class Sorttest {โมฆะสาธารณะคงที่ (สตริง [] args) {int [] a = {345,7,32,5,4,3,12,23,110}; .length-1); เริ่มต้น; ) {i ++; int, int index) {int tmp = a [n]; .println (arrays.toString (a));
3. การเรียงลำดับด่วน (สามารถรวมค่าซ้ำ)
คลาสสาธารณะ sorttest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,456,78, -1,78 , 78,32,345}; > = end) return; = ดัชนี && a [j] == [ดัชนี]) {index = swap (a,-j, ดัชนี); A [i]) {i ++; I, INDEX);}} QuickSort2 (A, Start, INDIX-1) A [n]; ;
4. การเรียงลำดับกอง
คลาสสาธารณะ sorttest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,456,78, -1,78 , 78,32,444,345}; /2-1; i> = 0; i-) {createBIgeLeap (a, i, size-1);} // การเรียงลำดับสำหรับ (int j = 0; j <size-1; [0]; [] a, int start, int end) {int tmp = a [start]; +1]) {J ++; ] = TMP;
5. แทรกเรียงลำดับ
Public Class Sorttest {โมฆะสาธารณะคงที่ (String [] args) {int [] a = {345,7,32,5,4, -1,3}; ); j = i; j> = 0; j-) {ถ้า (tmp <a [j]) {a [n] = a [j]; A [n] = TMP;
6. พับครึ่งแทรกเรียงลำดับ
คลาสสาธารณะ sorttest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {int [] a = {345,7,7,345,2,2,2,7,2,7,23,2,345,7,32,5,4,4,2,2,7,7,7,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, 1,3,7,2,3,2,3,4,2,1,1,2,4,5,3,345,3,2} โมฆะคงที่ insertSort2 (int [] a) {สำหรับ (int i = 0; i <a.length-1; i ++) {int n = i+1; ] ดำเนินการต่อ; ] {สูง = mid -1; -) {a [j] = a [j-1]; ;
7. Hill จัดเรียง
คลาสสาธารณะ sorttest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {int [] a = {345,7,32,5,4, -1,3,2,3,5,7,8,90,1}} แสดง (A); ) {int i, j, k, อุณหภูมิ, ช่องว่าง; 58548857, 157840433,410151271,1131376761,2147483647}; i <n; - ช่องว่าง;} a [j] = temp;
8. เลือกเรียงลำดับ
คลาสสาธารณะ sorttest {โมฆะคงที่หลัก (สตริง [] args) {int [] a = {345,7,32,5,4, -1}; } โมฆะคงที่ส่วนตัวเลือก (int [] a) {สำหรับ (int i = 0; i <a.length-1; i ++) {int min = i; j ++) {ถ้า (A [J] <a [min]) min = j; = TMP;
9. การสั่งซื้อ
คลาสสาธารณะ sorttest {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {int [] a = {345,7,32,5,4, -1,1,3,2,3,5,7,8,90,1,432 1}; พื้นที่เก็บข้อมูลดัชนีกลางอยู่กับค่าซ้าย int [] ซ้าย = setValue (a, 0, mid); ; ค่าองค์ประกอบคือ 1 mergesort (ขวา);} // รวมค่าซ้ายและขวาผสาน (A, ซ้าย, ขวา); {int i = 0, j = 0, k = 0; [i ++]; ; j ++) {a [k ++] = ขวา [j]; int i = 0; a));}}
สรุป:
คลาสสาธารณะ sortuTil {สาธารณะสุดท้ายคงที่ desc = -1; (int [] a, int sort) {ถ้า (sort == asc) bubblesortasc (a); .length-1; i ++) {สำหรับ (int j = 0; j <a.length-i-1; j ++) {ถ้า (a [j]> a [j+1]) {int tmp = a [j] ; A [J] = A [J+1]; 1; i ++) {สำหรับ (int j = 0; j <a.length-i-1; j ++) {ถ้า (a [j] <a [j+1]) {int tmp = a [j]; j] = a [j+1]; ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------- ความสามารถ -Seger-Line ---------------------------------------------------------------------- ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ param sortutil.asc, sortutil.desc */ โมฆะสาธารณะคงที่ QuicknorePeatsort (int [] a, int sort) {ถ้า (sort == asc) QuicknorePeatsortasc (a, 0, a.length-1); 0, A.Length-1); เริ่มต้น; {i ++;} ดัชนี = swap (a, i, index); int start, int end) {ถ้า start> = end); {j -;}}} swap (a, j, index); , ดัชนี - 1); C คงที่ void Quicksort (int [] a, int sort) {ถ้า (sort == asc) Quicksortasc (a, 0, a.length-1); void quicksortasc (int [] a, int start, int end) {ถ้า start> = end) return; [j]> a [index]) {j--;} ถ้า (j! = index && a [j] == a [index]) {index = swap (a,-j, index); index = swap (a, j, index); (A, ++ I, INDEX); voi d quicksortdesc (int [] a, int start, int end) {ถ้า start> = end) return; A [j] <a [index]) {j--; {index = swap (a, j, index); SWAP (A, ++ I, INDEX); การแลกเปลี่ยนส่วนตัว I NT (int [] a, int n, int index) {int tmp = a [n]; ---- ---------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ถ้า (A); I--) {CreateBighteAP (A, I, Size - 1); [ขนาด - 1 - J]; {int tmp = a [start]; int j = 2 * start + 1; A [j]> tmp) {a [start] = a [j]; int [] a) {// สร้างฮีปขั้นต่ำ int ขนาด = a.length; } // เรียงลำดับสำหรับ (int j = 0; j <size - 1; j ++) {int tmp = a [0]; = TMP; 1; ในขณะที่ (j <= end) {ถ้า j <end &&& a [j]> a [j+1]) {j ++; ]; ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------- ------------------------ /** * แทรกเรียงลำดับ * * @param อาร์เรย์เรียงลำดับ * @param sortutil ASC, SortUtil.desc */ โมฆะสาธารณะ insertsort (int [] a, int sort) {ถ้า (sort == asc) {insertsortasc (a); [] a) {สำหรับ (int i = 0; i <a.length - 1; i ++) {int n = i+1; j--) {ถ้า (tmp <a [j]) {a [n] = a [j]; n = j; โมฆะคงที่ INSERTSORTDESC (int [] a) {สำหรับ (int i = 0; i <a.length - 1; i ++) {int n = i+1; ; j> = 0; ] = tmp;}} //----------------------------------------- ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ---------------- * ครึ่งแทรกเรียงลำดับ * * @param อาร์เรย์เรียงลำดับ * @param sortutil.asc, sortutil.desc */ โมฆะคงที่สาธารณะ halfinsertsort (int [] a, การเรียงลำดับ int) {ถ้า (sort == asc) {halfinsertsortasc (a); - 1; / 2; ในขณะที่ (สูง> = ต่ำ) {mid = (สูง + ต่ำ) / 2; = mid + 1; TMP; TMP <a [i]) ดำเนินการต่อไป; tmp> a [mid]) {high = mid - 1; j> mid; ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ถ้า sortutil.asc, sortuTil.desc */ โมฆะสาธารณะ shellsort (int [] a, int sort) {ถ้า (sort == asc) {shellsortasc (a, a.length); ); , 4711, 11969, 27901, 84801, 213331, 543749, 1355339, 3501671, 8810089, 21521774, 58548857, 157840433 n; -k> = 0) {ga p = gaps [k]; - ช่องว่าง]> อุณหภูมิ) {a [j] = a [j - gap]; int i, j, k, temp, gap; int [] gaps = {1, 5, 13, 43, 113, 297, 815, 1989, 4711, 11969, 27901, 84801, 213331, 543749, 1355339, 3501671 , 21521774, 58548857, 157840433, 410151271, 1131376761, 2147483647}; = ช่องว่าง; j = j-ช่องว่าง;} a [j] = temp; ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------- --- / ** * เลือกเรียงลำดับ * * @param อาร์เรย์เรียงลำดับ * @param sortutil.asc เป็นโมฆะ selectsort (int [] a, int sort) {if (sort == asc) {selectsortasc (a); = 0; ::::::::::::::::::::::: กระทาน :::::::::::::::::::-1 = i+1; ] = a [min]; สำหรับ (int j = i+1; j <a.length; ]; ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ --------------------------------------- การแยกส่วน-ไลน์- ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ ------------------------------------------------------ -------------------------------------- sortuTil.desc */ โมฆะสาธารณะ Mergesort (int [] a, int sort) {// ค้นหาค่ากลาง int mid = a.length / 2; , mid); ถ้า (ซ้าย. length> 1) {// ต่อไปเพื่อแยกทางซ้ายจนกว่าค่าองค์ประกอบคือ 1 mergesort (ซ้าย, เรียงลำดับ); int [] ขวา = setValue (a, mid, a.length); = = ASC) {Mergeasc (A, ซ้าย, ขวา); ฉัน : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : ::::::::::::::::::::::: กระทาน :::::::::::::::::::::::::::::::::::::::::: กระทาน. Right.length;) {ถ้า (ซ้าย [i] <ขวา [j]) {a [k ++] = ซ้าย [i ++]; .length; i ++) {a [k ++] = ซ้าย [i]; , int [] ซ้าย, int [] ขวา) {int i = 0, j = 0, k = 0; [j]) {a [k ++] = ซ้าย [i ++]; ];} สำหรับ (; j <right.length; j ++) {a [k ++] = ขวา [j]; = int ใหม่ [ความยาว - เริ่มต้น];
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน