collections.sort ()
Java의 정렬은 Collectileos.sort ()를 사용하여 구현할 수 있습니다.
Collections.sort 메소드와 함께 목록을 정렬하는 두 가지 방법이 있습니다.
첫 번째는 다음과 같이 비슷한 인터페이스를 구현하기위한 목록의 객체입니다.
/*** 주문에 따라 사용자를 정렬하십시오*/public class 사용자는 <user> {private string getName () getName (} public void setName {this.name = 이름;} public integer getrder () {return order;} public void setorder (정수 순서) {this.order = order;} public int compareto (user arg0) {rn this.getorder (). );}} 시험:
public class test {public static void main (string [] Art) {new user1. "a"; ) user2 (목록); 출력 결과는 다음과 같습니다
AB
두 번째 방법은 다음과 같은 수집의 로딩 방법을 기반으로 달성하는 것입니다.
/*** 주문*/public class user {// 비슷한 인터페이스를 구현할 필요가 없습니다. 반품 순서;} public void setorder (정수 순서) {this.order = order;}}} 메인 클래스에서 쓰기 ::
public class test {public static void main (string [] Art) {new user1. "a"; ) user2.setorder (2); int compare (user arg0) {return arg0.getorder (); getName ());}}} 출력 결과는 다음과 같습니다
AB
이전 코드 구조는 간단하지만 고정 된 속성에 따라 정렬 할 수 있습니다.
최고를 선택하십시오.
일반적인 정렬 알고리즘
몇 가지 고전적인 정렬 알고리즘으로 Java 코드의 연습을 살펴 보겠습니다.
버블 분류
공개 정적 void bubblesort (int a [], int n) {int i, j; j ++) {if (a [j]> a [j + 1]) {a [j] a [j] ^ a [j + 1]; [j + 1]; a [j] = a [j] ^ a [j + 1];}}}정렬을 직접 삽입하십시오
공개 정적 void insertsort (int a [], int n) {i = 1; i <n; i ++) {tmp = a [i]; j; J = 0; ;}}}직접 선택하십시오
공개 정적 void selectSort (int a [], int n) {int i, j, for (j = i+1; j < N; [loc] = a [i] ^ a [loc];정렬
/ ** * 힙 정렬 (작은 것부터) * * * * @param a * @param n */ public static void heapsort (int a [], int n) {int tmp; n); 0, j);}} / ** * 많은 뿌리를 구성 * * * * * * @param a * @param n * / private static void buildMaxHeap (int a [], int n) {for (int i = (int i =) n -2) / 2; i-) {maxHeapify (a, i, n); i * @param n * / private static void maxHeapify (int a [], int i, int n) {i <n) {왼쪽 = 2 * i + 1; i + 2; loc (왼쪽 <n && a [i]) {i = 왼쪽;} if (오른쪽 <n && a [i]) {i = 오른쪽. ;} if (loc! = i) {a [loc] ^ a [loc] = a [i]; a [i] = a [loc] ^ a [i];} else {break;}}}빠른 분류
public static void QuickSort (int a [], int bt, int ed) {int pivot = pivotputition (a, bt, ed); 1, ed);}} private static void swapvar (int a [], int bt, int ed) {int mid = bt + (ed -bt) / 2; if (mid! = bt) {a [a ) BT] ^ [MID] = A [BT] = A [BT]; bt, int ed) {// 순서대로 배열을 방지하기 위해 중간 값을 취합니다 (a, bt, ed); ed) {while (bt <ed && a [ed]> = stand) {ed-;} if (bt <ed) {a [bt ++] = a [bt] <= stand); bt ++;} if (bt <ed) {a [eds ---] = a [bt];} [bt] = return bt;};병합
public static void mergesort (int a [], int bt, int ed) {int mid = bt + (ed -bt) / 2; ed); mergearay (a, bt, mid, ed);}} private static void mergearray (int a [], int mid, int ed) {int i, j, k, len = ed -bt + 1 int tmp [] = for (i = bt, j = mid +1, k = 0; = a [j]) {tmp [k] = a [i ++];} else {tmp [k] = a [j ++];} while (j <= ed) {tmp [k ++ ] = a [j ++];} for (i = 0; i <k; i ++) {a [bt+i] = tmp [i];}}테스트 프로그램
위의 알고리즘을 요약하고 요약하십시오.
java.util.scanner javasort {public static void main (string cin = new Scanner (system.in); cin.nextint (); a = n]; insertsort (a, n); ** * 정렬 병합 * * * @param a * @param bt * @param eds * / public static void memort (int a [], int bt, int ed) {if <ed) {int mid = bt + (ed -BT) / 2; param bt * @param mid * @param ed */ private static void mergearray (int a [], int bt, int mid, int ed) {int i, j, k, k, len = ed -bt + 1; tmp [] = new int [len]; <= a [j]) {tmp [k] = a [i ++];} else {tmp [k] = a [j ++];}} while (i <= mid) {tmp [k ++ ] = a [i ++];} while (j <= ed) {tmp [k ++] = a [j ++];} for (i = 0; i <k; i ++) {a [ bt+i] = tmp [i];} / ** * 빠르게 정렬 * * * @param a * @param bt * @param ed * / public static void quicksort (int a [], int bt, int ed) { if (bt <ed) {int pivot) = pivotpartition (a, bt, quicksort -1); a [], int bt) {int mid = bt + (ed -bt) / 2; ] = a [bt] [mid]; a [bt] ^ a [mid];}} / ** * 벤치 마크 포인트 위치를 찾는 빠른 행 * * @param a * @param bt * @ PARAMEDS * @return */ private static int pivotpartition (int a [], int bt, int ed) {// 순서대로 외관의 배열을 방지하기 위해 중간 값을 스탠드 (a, a, bt, ed); int stand = a [bt <ed) {while (bt <ed && a [ed]> = stand {ed-;} if (bt <ed) {a [bt + +] = a [ed];} while (bt <ed && a [bt] <= stand) {bt ++;} if (bt <ed) {a [eds ---] = a [bt];} a [bt] = stand; return bt;} / ****** heap 정렬 (작은 것부터)****@param n* / public static void heapsort (int a [], int n ) {int tmp; [J]; [], int n) {for (int i = (n -2) / 2; i> = 0; i-) {maxHeapify (a, i, n);} / ** * 유지 보수 유지 보수의 최대 더미 입찰에서 i * * * * @param a * @param n * / private static void maxHeapify (int a [], int i, int n) {int 왼쪽, 오른쪽, 공간 (i <n) {왼쪽 = 2 * i + 1; 오른쪽 = 2 * i + 2; n && a [i]) {i = 왼쪽;} if (오른쪽 <n && a [i. ]) {i = 오른쪽;} if (loc! = i) {a [a] = a [loc] = a [loc] ^ a [i]; i] = a [loc] ^ a [i];} else {break;}}}}}} / ** * 직접 정렬 선택 * * * @param a * @param n * / public static void selectsort (int a [int a [ ], int n) {int i, j, 로컬; (a [j] <a [loc]) {loc = j;}} if (loc! = i) {a) [i] = a [i] ^ a [loc]; a [i] ^ a [loc]; a [i] a [i] ^ a [loc];}} * 직접 삽입 된 정렬 * * @param a * @param n * / public static void insertsort (int a [], int n) {int i, j, tmp; 0; j-) {if (a [j]> tmp) {a [j + 1] = a [j];} else {break;}} a [j + 1] = tmp;} / ** * 버블 링 정렬 * * * @param a * @param n * / public static void bubblesort (int a [], int n) {for (i = 0; i <n -1; i ++) { (j = 0; 1]; a [j] ^ a [j] = a [j] ^ a [j + 1];}} * 인쇄 배열 * * @param a * / public static void printarr (int a []) {for (int i = 0; i <.length; i ++) {if (i == A.length -1) {System.out. printf ( "%d/n", a [i]);} else {system.out.printf ( "%d", a [i]);}}}}}