이 기사는 Java의 다양한 분류 알고리즘을 요약합니다. 다음과 같이 참조에 대해 공유하십시오.
1. 버블 정렬 :
공개 클래스 SortTest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,78, -1,78 , 78,32,444,345}; {for (int j = 0; j <a.length-i-1; [j+1]; a [j+1] = tmp}}} 개인 정적 무효 쇼 (int [] a) {system.out.println (arrays.toString (A));
2. 빠른 정렬 (중복 값 없음) :
공개 클래스 SortTest {public static void main (string [] args) {int [] {345,7,32,4,3,12,110}; .length-1); show (a); = 시작; ) {i ++} swap (a, i, index-1); int n, int tmp = [n] = index]; .println (arrays.toString (a))}}
3. 빠른 정렬 (반복 값 포함)
공개 클래스 SortTest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,78, -1,78 , 78,32,345}; int i = int index = while (a [j]> a [j--}; = index && [j] = a [index]) {index = swap (a, j, index) {index = swap (a, j, index); a [i]) {i ++; i, index)} QuickSort2 (a, start, index-1); a [n] = A [index] = tmp; int [] a) {system.out.println }}
4. 힙 분류
공개 클래스 SortTest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3,12,23,110,45645,321,78, -1,78 , 78,32,444,345}; /2-1; i> = 0; i-) {CreateBigheap (a, i, size-1) // (int j = 0; j <size-1; j ++) {int tmp = a [0]; [size-1-j] = tmp; [] a, int end) {int tmp = a int j = 2*start+1; {j ++; ] = tmp;
5. 정렬 삽입
공개 클래스 SortTest {public static void main (string [] args) {int [] {345,7,32,5,4, -1,3}; );} int [] a) {int n = i+1; j = i; j> = 0; a [n] = tmp}} 개인 정적 무효 쇼 (int [] a) {system.out.println (arrays.tostring});
6. 하프 삽입 정렬을 접습니다
public class sorttest {public static void main (String [] args) {int [] a = {345,7,7,345,2,7,7,7,23,23,345,32,5,4,- 1,3,3,3,4,2,4,3,345,3,2}; 정적 void insertsort2 (int [] a) {int i = 0; i ++) {int n = i+1; ]) int int high = i; ]) {mid -1; -) {a [j] = [j-1]} [low] = tmp}}} {int [] a) }}
7. 힐 정렬
공개 클래스 SortTest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3,3,3,3,5,8,90,1} 쇼 (a); ) {int i, j, k, temp, gap; int [] gaps = {1,5,13,43,113,297,815,1989,4711,11969,27901,84801,213331,543749,13539,3501616161616100161616716716161671671616716716167167161671616716161616161616161616161616161616171616171717174, 58548857, 157840433,410151271,11376761,2147483647}; i <n; i는 temp = j = i; -GAP;
8. 정렬을 선택하십시오
공개 클래스 SortTest {public static void main (string [] args) {int [] {345,7,32,5,4, -1}; } private static void selectSort (int [] a) {for (int i = 0; i <a.length-1; i ++) {int min = i; j ++) {if (a [j] <a [min]) min =} {int tmp = a [i]; = tmp;
9. 주문
public class sorttest {public static void main (String [] args) {int [] a = {345,7,32,5,4, -1,3,3,3,3,5,8,90,1,432, 1}; show (a); 공간 저장 중간 색인은 왼쪽 값 int [] left = setValue (a, 0, mid); } // 오른쪽 값이있는 중간 지수를 저장하기 위해 공간을 적용합니다 요소 값은 1 Mergesort (오른쪽) // 왼쪽 및 오른쪽 값 병합 (a, 왼쪽, 오른쪽); {int i = 0, j = 0, k = 0; [i ++]} else {a [k ++]} {a [k ++] = 왼쪽 [i]; ; int i = 0; i <x.length; a));}}
요약:
공개 클래스 SortUtil {공개 최종 정적 int desc = -1; (int [] a, int sort) {if (sort == asc) bubblesortasc (a); .length-1; i ++) {for (int j = 0; a [j+1]; 1; i ++) {for (int j = 0; j <a.length-i-1; j] = a [j+1]; --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- ------------------------------------------------- 능력 -세그먼트 라인 ---------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- Param Sort Sortutil.asc, sortutil.desc */ public static void QuickNorePeatSort (int [] a, int sort) {if (sort == ASC) QuickNorePeatSortasc (a, 0, a.length-1); 0, A.length-1); 시작; {i ++} index = swap (a, i, index -1); int end) {if (start> = end) int j = ind index (while); {j-; , index -1); QuickNorePeatSortDesc (a, index + 1, end) / ** * Quick Sort (반복 값 허용) * * @param a @param sort sortutil.asc, sortutil.desc * / publi C 정적 void QuickSort (int [] a, int sort) {if (sort == asc) QuickSortasc (a, 0, a.length-1); 정적 void quicksortasc (int [] int end) {int j = end; [j]> [index]) {j-}; index = swap (a, j, index); (A, ++ I, index} index = QuickSortasc (a, index +1); 정적 voi d quicksortdesc (int start, int end) {int j = end (i <j); [j] <A [index]) {j-} if (j! = index = a [index] {index = swap (a, -j, index); {index = swap (a, j, index); 스왑 (a, ++ i, index} index = requpsortdesc (a, index -1); 개인 정적 스왑 (int [] a, int n, in in index]; -------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- ---------- @param 정렬 배열 * @param sort sortutil.asc, sortutil.desc */ public static void heapsort (int [] a, int sort) {if (sort == ASC) HeapsortASC (a); hepsortdesc (a); i-) {createbigheap (a, i, size -1) // (int j = 0; j <size -1; j ++) {int tmp = a [0]; [크기 -j]; {int tmp = [start]; a [j] = j = 2 * J}; int [] a) {// 최소 힙 생성 int size = a.length (int i = size / 2-1; i> = 0; i-) {CreateSmallHeap (a, i, size -1); } // int j = 0; j <size -1; j ++) {int tmp = a [0]; = tmp; createmallheap (a, 0, size -2 -j)} private static void createSmallHeap (int tmp = a start]; 1; ] 시작 = J = 2 * J + 1; --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- ------- ---------------------- /** * 삽입 정렬 * * @param 정렬 배열 * @param sort sortutil. asc, sortutil.desc */ public static void insertsort (int [] a, int sort) {insertsortasc (a); [] a) {int i = 0; i <a.length -1; i ++) {int n = i+1; j-) {if (tmp <a [j]) {a [j]}; 공개 정적 void insertsortdesc (int [] a) {int i = 0; i ++) {int n = i+1; J> = 0; ] = tmp;}} // --------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- -------------- * 반 삽입 정렬 * * @param 정렬 배열 * @param sort sortutil.asc */ public static void halfinsertsort (int [] a, int sort) {if (sort == asc) {halfinsertsortasc (a); -1; int n = i + 1; / 2; = MID + 1; else {low = mid}; tmp; tmp <in int high = i; tmp> a [high = mid -1} {low = mid + 1; J> Mid; --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- ---------------- ------------------------- ** * hill sort * * @param a storm array * @param 정렬 SortUtil.asc, sortutil.desc */ public static void shellsort (int [] a, int sort) {if (sort == asc) {shellsortasc (a, a.length); )}} public static void shellsortasc (int [] a, int n) {int [] gap; , 4711, 11969, 27901, 84801, 213331, 543749, 1355339, 3501671, 8810089, 21521774, 58548857, 157840433, 410151271, kaps n; K ++; -k> = 0) {gaf [k]; -GAP] {a [j] = j = j -gap; INT I, J, K, TEMP, GAP; int [] 갭 = {1, 5, 13, 43, 113, 297, 815, 1989, 4711, 11969, 27901, 84801, 213331, 543749, 1355339, 3501671, 8810089 , 21521774, 58548857, 157840433, 410151271, 1131376761, 2147483647}; = 갭; i ++) {j = i; j = j- 갭; --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- ------------------ --- / ** * SORT SORT * * @Param 정렬 배열 * @param sort sortutil.asc, sortutil.desc * / public static void selectSort (int [] a, int sort) {if (sort == asc) {selectSortasc (a) {selectSortDesc (a)} public static void selectSortasc (int i). = 0; i <a. A. 길이 -1; int min = : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : = i+1; ] = [min]; a [min] = tmp}} public static void selectSortdesc (int i = 0; i <a.length -1; i ++) {int max = i. for (int j = i+1; j <a.length; ]; a [max] = tmp}}}; --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- -----------------------------------------기능 분할-라인- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- --------------------------------------------------------- ------------------------------------------ SortUtil.DESC */ public static void mergesort (int [] a, int sort) {// 중간 값을 찾으십시오 int mid = a.length / 2; , MID); 왼쪽이면> 1) {// 요소 값이 1 Mergesort가 될 때까지 왼쪽을 계속 분할하십시오 (왼쪽, 정렬). int [] right = setValue (a, mid, a.length); = ASC) {mergeasc (a, 왼쪽, 오른쪽) {mergedesc (a, 왼쪽, 오른쪽)} 개인 정적 void mergec (int [] a, int [] 오른쪽) {int. 나 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : = 0, j = 0, k = 0; right.length;) {if (왼쪽 [i] <오른쪽 [j]) {a [k ++] {a [k ++] = 오른쪽 [j ++]; .length; i [k ++] = 왼쪽 [i]; , int [] 왼쪽, int [] 오른쪽) {int i = 0, j = 0, k = 0; [j]) {a [k ++] = [i ++] {a [k ++] =}} {a [k ++] = 왼쪽 [i ]; = int i = 0; i <x.length;
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.