이 기사에서는 Java Exchange 분류에서 칵테일 분류의 구현 방법에 대해 설명합니다. 참조를 위해 공유하십시오. 세부 사항은 다음과 같습니다.
칵테일 분류, 즉 방향 버블 분류, 칵테일 저어 분류, 교반 분류 (선택 분류의 변형으로 간주 될 수 있음), 잔물결 분류, 앞뒤로 분류 또는 행복한 시간 정렬은 버블 분류의 변형입니다. 이 알고리즘과 버블 분류의 차이점은 정렬 할 때 시퀀스에서 두 방향으로 정렬된다는 것입니다.
버블 분류와 다릅니다.
칵테일 분류는 거품 분류의 약간의 변형과 동일합니다. 차이는 낮거나 높고 높고 높고 낮은 반면, 버블 정렬은 각 요소를 서열에서 낮은 곳에서 높게 비교합니다. 버블 정렬은 한 방향에서 (낮은 곳에서 높음) 비교되므로 루프 당 하나의 항목 만 움직이기 때문에 버블 정렬보다 약간 더 나은 성능을 얻을 수 있습니다.
시퀀스 (2,3,4,5,1)를 예로 들어, 칵테일 분류는 분류를 완료하기 위해 시퀀스를 한 번만 방문하면되지만 버블 분류를 사용하는 경우 4 번만 필요합니다. 그러나 지저분한 시퀀스의 상태에서 칵테일 분류 및 버블 분류의 효율은 매우 열악합니다.
최악의 시간 복잡성 O (n^2)
최적의 시간 복잡성 O (N)
평균 시간 복잡성 o (n^2)
칵테일 분류의 역동적 인 그림은 다음과 같습니다.
코드 분석 :
com.baobaotao.test; / *** 정렬 연구* / public class sort { / *** 클래식 칵테일 정렬* / public static void cocatailsort (int [] 배열) {int 길이 = array.length; // 루프 길이/2 회 j]> 배열 [j+1]) {swap (array, j, j+1)} (int j = longth-i-1; j> i; j-) {if (array [j] <배열 [j-1]) {스왑 (array, j-1, j)} printarr (array)}; 정적 void cocatailsortflag (int [] array) {int length = array.length; FLAG2 = true; = false;} for (int j = length-i-1; flag2 = false}} if (flag1 && flag2) {array}* @param a @param b로 전달됩니다. 들어오는 B * @param c 수신 할 수있는 숫자 C */ public static void 스왑 (int [] a, int b, int c) {int temp = 0; b]> a [b] = a [c] = temp}; void printarr (int c : array) {system.out.print (c + ""); int [] 번호 = {11,95,45,15,78,84,51,24,12}; CocatailSort (번호).결과 분석 :
11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95 11 12 24 45 51 78 84 95 ******************* * *** 11 12 45 15 78 84 51 24 95 11 12 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95
칵테일이 분류 된 횟수는 일반적인 거품 정렬보다 훨씬 적다는 것을 알 수 있습니다. 4 번만 걸리며 개선 된 버전의 로고 칵테일 정렬은 정렬을 완료하는 데 3 번만 걸립니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.