이 기사는 일반적으로 사용되는 8 가지 정렬 알고리즘을 구현합니다. 정렬 삽입, 버블 링 정렬, 정렬 선택, 언덕 정렬, 빠른 정렬, 합병 정렬, 스태킹 및 LST베이스 분류
첫 번째는 18 세입니다. Java 파일 은 다음과 같습니다.
java.util.arrays import 8 개의 일반적으로 사용되는 정렬 알고리즘을 구현합니다. 정렬, 버블 링 정렬, 힐 정렬*및 빠른 정렬, 합병, 전용 슬립 및 lsthor gkh178 정렬 삽입 : 시간 복합 O (n^2) 공개 정적 무효 인서트 조트 (int a [], int n) {for (int i = 1; i <n; ++ i) {{int temp = a [i]; int j = i -1; ;}} // 버블 분류 : 시간 복잡성 o (n^2) 공개 정적 무효 Bubblesort (int a [], int n) {for (int i = n -1; i> 0; 0; 0; 0; 0 0; 0; 0; temp = a [j] = a [j + 1]; int a [], int n) {(int i = 0; i <n -1; ++ i) {int min = int index = i; j <n; + j) {if (a [a [a [a [a [a [a [a [a [a [a j] <min) {min = a [a [a [a [a j] <min) j]; index = j}} [index] = a [i] = min;}; public static void shellsort (int a [], int n) {for (int gap = n / 2; gap> = 1; gap / = 2) {for (int i = gap; i <n; ++ i) { int temp = a int j = i -gap; j + gap] = test;}} // 빠른 정렬 : 시간 복잡성 o (nlgn) public static void quicksort (int a [], int n) {_quicksort (_quicksort (a, 0, n-1);} public static void Left, q -1); 왼쪽 <right && a [오른쪽]> = pivot) {-Right;} a [왼쪽] = A에 대해 (왼쪽 <righ && a <= pivot) {++ 왼쪽;} a. 오른쪽] = [왼쪽];} a [왼쪽] = 피벗 왼쪽;} // 정렬을 합병합니다. , n -1); public static void _mergesort (int a [], int left, int right) {if (왼쪽 <오른쪽) {int mid = left + (오른쪽 - 왼쪽) / 2; Mid); -left +1; int newa [] = new int [int i = 0, j = 왼쪽; i <= 길이 -1; ++ i, ++ j) {newa [i] = a [ J];} int i = 0; int k = left; ] <newa [j]) {a [k] = newa [i ++];} else {a [k] = newa [j ++];} while (i <= mid -left) {a [k + +] = newa [i ++];} while (j <= right -left) {a [k ++] = newa [j ++];} // 힙 정렬 : 시간 복잡성 o (nlgn) public void heapsort (int a, int n) {a, n); i) int temp = a [0] = a [i] = upadjust (a, i); [], int n) {upadjust (a, n);} // 길이 n 배열은 공개 정적 무효 UPADJust (int a [], int n) {// 하위 노드 트래버스가있는 각 요소가 트래버스. n) {// 오른쪽 자식 값의 값은 노드의 값보다 크고 (a [2 * i]> a [i -1]) {int temp = a [2 * i]; a [2 * i] = a [i -1] = 테스트;} // 왼쪽 자식의 값은 노드의 값보다 크고 (a [2 *. i -1]> a [i -1]) {int temp = [2 * i -1] = a [i -1] = 임시; } // 조정 노드 조정 (a, n, 2 * i); {// 노드의 값은 (a [2 * i -1]> a [i -1]) {int temp = a [2 * i -1]; = a -1]; a [i -1] = temp;}}} // 기본 분류의 시간 복잡성은 O (거리 (n+radix)), 거리는 자릿수 수, n은 숫자입니다. 배열의 기본은 // 기본 정렬에 LST 메소드를 사용하는 것이며, MST 메소드는 IT에 포함되지 않습니다 정렬 할 배열의 길이는 배열의 길이 공개 정적 void void void lstradixSort (int n, int radix) {int [] new int [n]입니다 정렬을 계산하기 위해 [] count = new int [radix]의 배열을 일시적으로 입금합니다 첫 번째 장소는 (int i = 0; i <<< istance; ++ i) {system.arraycopy (a, 0, newa, 0, n); newa array array.fill (count, 0); // 카운트 수를 (int int j = 0; j <n; ++ j) {int radixkey = (newa [j] /divide) % Radix. ; // 배열 요소의 현재 처리 비트 값을 얻습니다. 배열에서 각 radixkey의 끝 위치, 위치 번호 범위는 (int j = 1; j <radix; ++ j) {count [j] = count [j] + count [j -1 ];} // 정렬을 계산하여 정렬을 사용합니다. j]; -카운트 키];} divide = divide * radix;}}그런 다음 테스트 코드 recteightalgorithms.java , 코드는 다음과 같습니다.
공개 클래스 recteightalgorithms {public static void printArray (int a [], int n) {for (int i = 0; i <n; ++ i) {system.print (a [i] +""); == n -1) {system.out.println ();}} public static void main (string [] args) {for (int i = 1; i <= 8; ++ i) {int arrr [] = {45, 38, 26, 77, 128, 38, 25, 444, 61, 153, 9999, 1012, 43, 128}; 2 : arr, arr.lengths : QuickSort (Arr.length); SELLGORITHMS.LSTRADIXSORT (ARR, arr.length, 10, 4); 마지막 실행 결과는 다음과 같습니다.
위의 것은 Java가 일반적으로 사용되는 8 개의 정렬 알고리즘을 구현할 수있는 모든 코드입니다.