이 기사의 예는 Java가 버블 링 정렬을 사용하여 배열을 정렬하는 방식을 알려줍니다. 참조를 위해 모든 사람을 위해 공유하십시오. 세부 사항은 다음과 같습니다.
1. 버블 분류 :
배경 정렬을 사용하여 배열을 정렬하십시오
2. 기본 개념 :
두 개의 인접한 숫자가 차례로 비교되고 소수점을 앞면에두고 많은 숫자가 뒤에 있습니다. 즉, 첫 번째 여행에서 : 먼저 첫 번째와 두 번째 숫자를 비교하고, 소수점을 이전에 넣고, 많은 숫자를 넣으십시오. 그런 다음 두 번째와 세 번째 숫자를 비교하고, 소수점을 이전에 놓고, 많은 숫자 후에도 마지막 두 숫자가 될 때까지 계속해서 소수점을 놓고 많은 수가 들어갑니다. 이 시점에서 가장 큰 숫자는 끝까지 설정되었습니다. 두 번째 여행에서 : 첫 번째 쌍에서 시작하여 (두 번째 숫자와 세 번째 숫자가 줄어들 수 있기 때문에 첫 번째 숫자는 두 번째 숫자보다 더 이상 두 번째 숫자가 아니기 때문에) 비교 후 소수점을 두십시오. 두 번째 숫자가 이미 가장 큰 숫자가 될 때까지, 두 번째 여행의 끝에서는 두 번째 위치에서 새로운 최대 숫자가 얻어집니다 (실제로 두 개의 주요 숫자). 결과적으로 최종 순서가 완료 될 때까지 위의 프로세스를 반복하십시오.
셋째, 아이디어 실현 :
듀얼 -루프 구현의 경우 외부 사이클 변수가 I로 설정되고 내부 순환 변수가 J로 설정됩니다. 정렬 해야하는 n 숫자가 있으면 외부 사이클이 N-1 회 반복되고 내부 사이클은 N-1, N-2, ..., 1 시간을 반복합니다. 매번 비교하는 두 가지 요소는 내부 사이클 J와 관련이 있습니다. [J] 및 [j+1]로 별도로 식별 할 수 있으며 I의 값은 1,2, ..., N-1입니다. , 각 i, j의 값에 대한 n-1은 0,1,2, ... ni입니다.
배열 길이 n :
1. 두 개의 인접한 두 데이터와 비교하여 이전 데이터가 이후 데이터보다 큰 경우 두 데이터가 교환됩니다.
2. 이러한 방식으로, 가장 큰 데이터는 N-1 데이터에 하나의 트래버스 후 배열의 N-1 위치로 "가라 앉는"것입니다.
3. n = n-1, n이 0이 아닌 경우 처음 두 단계를 반복하면 정렬이 완료됩니다.
4. Java 코드 구현 :
패키지 배열; / *** @author pplsunny* @category { / *** Cyclic 출력 정렬 결과를 사용하십시오. int [] a = {2, 4, 76, 12, 34, 23, 86}; * * 버블 분류 함수는 정적이고 편리한 사용으로 정의됩니다. ++) { / / / 이것은 (int j = 0; j <a.length -i; j ++)의 제어 번호입니다. [j]> a [j + j + 1]) {int temp = a [j] = a [j + 1];
5. 성능 분석 :
레코드 시퀀스의 초기 상태가 "긍정적 인 시퀀스"인 경우, 버블 링 분류 프로세스 만 정렬되면 분류 프로세스 중에 N-1 비교만이 "리버스 순서"에 대해 수행됩니다. 1)/2 비교 및 기록을 수행해야합니다. 따라서, 버블 링 분류의 총 시간 복잡성은 O (n*n)이다.
6. 알고리즘 최적화 :
버블 링 분류 방법의 결핍 및 개선 방법 :
먼저, 정렬 과정에서 최종 순서가 수행 된 후에는 데이터가 완전히 정렬되었지만 프로그램은이 결함을 해결하기 위해 정렬을 완료할지 여부를 결정할 수 없습니다. 초기 값에 대한 값은 비 -non -non -non -non -non -non -non -non -non -non -enough set 값 0에 대한 값을 나타냅니다. 데이터가 시작되기 전에 각 종류는 0으로 설정됩니다. 새로운 라운드의 시작 부분 에서이 로고가 0이라면, 마지막으로 교환되지 않았다.
/ *** 버블 분류 기능 개선 된 버전*/ public static void bubblesort (int [] a) {boolean flag = while (flag = forge; ; i ++) {for (int j = 0; a [j + 1];
둘째, 버블 링 분류에서 스캔은 무수히 교환 될 수 있거나 전통적인 버블 링 분류 알고리즘에 한 번 또는 여러 개의 데이터 교환이있을 수 있으며, 몇 년 동안 개선 된 알고리즘이있을 수 있습니다. 데이터 교환의 위치 정보는 처리되지 않습니다. 이 정보를 최대한 활용하려면 글로벌 스캔에서 각 백 주문 데이터에서 로컬 버블 링 정렬을 수행 할 수 있으며 (로컬 버블 링 분류라고합니다. 로컬 버블 링 분류 및 버블 링 분류 알고리즘은 동시에 복잡성이 있으며 긍정적이고 역 순서 조건 하에서 키워드 및 움직임 수에 필요한 키워드 수는 정확히 동일합니다. 로컬 버블 링 분류 및 버블 링 분류의 데이터 이동의 수는 항상 동일하기 때문에 로컬 버블 링 분류에 필요한 키워드의 수는 종종 버블 링 분류보다 적습니다. 이는 로컬 버블 링 분류가 평균 횟수를 비교할 가능성이 있음을 의미합니다. 평균. 비교의 장점이 프로그램의 복잡성에 의해 가져 오는 추가 비용을 상쇄하기에 충분하지 않으며 데이터 볼륨이 클 때 로컬 버블 링 분류의 시간 성능이 훨씬 우수 할 때 평균. 위조품보다 정렬. n 비활성화 된 데이터의 경우, 우리가 버블 링 정렬에있을 때, k 데이터와 k+1 데이터 리버스 순서가 있으면 K+1 데이터가 정렬되면 올바른 위치로 이동합니다. 즉, 이전 k+1 데이터를 보자. 긍정적 인 순서로 조정하십시오. 이 버블 링 방법은 이전 K+1 데이터에 대해서만 버블 링하기 때문에 -우리는 그것을 -로컬 버블 링이라고합니다.
이 기사는 모든 사람의 Java 프로그램 설계에 도움이되기를 바랍니다.