원제: Java의 클래식 알고리즘: Bubble Sort(Bubble Sort)
버블 정렬이란?
버블 정렬은 순서에 따라 요소를 서로 쌍으로 비교하는 간단한 정렬 알고리즘입니다. 순서가 큰 것에서 작은 것 순이면 두 요소를 서로 비교할 때 더 큰 요소가 먼저 순위가 지정되고, 그렇지 않으면 더 큰 요소가 나중에 순위가 지정됩니다. 버블 정렬은 큰 것부터 작은 것까지의 정렬과 작은 것부터 큰 것의 정렬로 나누어진다.
원리: 인접한 두 요소를 비교하고 값이 더 큰 요소를 오른쪽 끝으로 바꿉니다.
아이디어: 인접한 두 숫자를 차례로 비교하여 앞에 소수점을 넣고 뒤에 큰 숫자를 넣습니다. 즉, 첫 번째 단계에서는 먼저 첫 번째 숫자와 두 번째 숫자를 비교하고 소수를 먼저 배치하고 큰 숫자를 마지막에 배치합니다. 그런 다음 두 번째 숫자와 세 번째 숫자를 비교하고 소수를 앞에 놓고 큰 숫자를 뒤에 놓고 마지막 두 숫자를 비교할 때까지 이렇게 계속하여 소수를 앞에 놓고 큰 숫자를 뒤에 넣습니다. 모든 정렬이 완료될 때까지 첫 번째 단계를 반복합니다.
예: 배열을 정렬하려면: int[] arr={6,3,8,2,9,1};
1차 정렬:
1차 정렬: 6 및 3 비교, 6가 3보다 큼, 위치 바꾸기: 3 6 8 2 9 1
두 번째 정렬 : 6과 8을 비교하면 6이 보다 작습니다. 8, 위치 교환 없음: 3 6 8 2 9 1
세 번째 정렬: 8과 2을 비교하면 8이 2보다 큽니다. , 교환 위치: 3 6 2 8 9 1
네 번째 순서: 8 및 9 비교, 8이 9보다 작음, 위치 교환 없음: 3 6 2 8 9 1
다섯 번째 정렬: 9 및 1 비교: 9가 1보다 큼, 위치 바꾸기: 3 6 2 8 1 9
첫 번째 여행에서 총 5 비교를 했고, 정렬 결과는 3 6 2 8 이었습니다. 1 9
---------------------------------- --- ----------
2차 정렬:
첫 번째 정렬: 3 및 6을 비교하면 3이 6 , 위치 교환하지 않음: 3 6 2 8 1 9
두 번째 정렬: 6 및 2 비교, 6이 2보다 큼, 위치 바꾸기: 3 2 6 8 1 9
3위: 6 및 8 비교, 6이 8보다 큼, 위치 교환 없음: 3 2 6 8 1 9
네 번째 정렬: 8 및 1 비교, 8은 1보다 큽니다. 위치 바꾸기: 3 2 6 1 8 9
두 번째 패스에서 총 4개의 비교가 이루어졌으며 정렬 결과는 다음과 같습니다. 3 2 6 1 8 9
---- -------------------------- ----------- ---------------세 번째 정렬:
첫 번째 정렬: 3 2과 비교하면 3이 2, 위치 교환: 2 3 6 1 8 9
두 번째 정렬:3 및 6 비교, 3이 6보다 작습니다. 위치를 교환하지 마세요. 2 3 6 1 8 9 세 번째 정렬: 6 및 1 비교, 6 더 큼 1보다 위치 교환: 2 3 1 6 8 9 두 번째 여행이 진행됩니다. 총 3 비교, 정렬 결과: 2 3 1 6 8 9 ------------ - ------------------------------------------------- - ------- 네 번째 정렬: 첫 번째 정렬: 2 및 3 비교, 2이 3보다 작음, 위치 교환 없음: 2 3 1 6 8 9 두 번째 정렬: 3 및 1 비교 , 3이 1보다 큽니다. 위치 바꾸기: 2 1 3 6 8 9 두 번째 여행은 총 2 비교를 진행했고, 정렬 결과: 2 1 3 6 8 9 ----------------------------------------------- --- -------- 다섯 번째 정렬: 첫 번째 정렬: 2과 1을 비교하면 2이 1, 포지션 교환: 1 2 3 6 8 9 두 번째 여행은 총 1회 비교, 정렬 결과: 1 2 3 6 8 9 최종 결과: 1 2 3 6 8 9--------- -------- ---------------- -------- N개 숫자를 정렬해야 하며 총 N개임을 알 수 있습니다. -1 정렬이 수행될 때마다 i에 대한 정렬 횟수는 (N-i)회입니다. , 즉 이중 루프 문을 사용할 수 있습니다. 외부 레이어는 루프의 횟수를 제어하고, 내부 레이어는 루프의 횟수를 제어합니다. 레이어는 각 패스의 사이클 수, 즉 자세히 알아보기 고전적인 Java 알고리즘 버블 정렬에 대해 공유합니다. PHP 중국어 웹사이트에 주목하세요! for(int i=1;i<arr.length><p><br></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;">버블 정렬의 장점: 정렬이 수행될 때마다 비교 횟수가 한 번 줄어듭니다. 수행하면 더 큰 값을 찾습니다. 위의 예와 같이 첫 번째 비교 후에는 마지막 숫자가 가장 큰 숫자여야 합니다. 두 번째 정렬에서는 마지막 숫자를 제외한 다른 숫자만 비교하면 되며 가장 큰 숫자도 찾을 수 있습니다. 두 번째 비교에 참여한 숫자 뒤에는 세 번째 비교에서는 마지막 두 숫자를 제외한 나머지 숫자만 비교하면 되는 식이다... 즉, 비교를 하지 않을 때마다 여행 당 한 번의 비교가 줄어든다. 어느 정도 알고리즘의 양. </span></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;">시간 복잡도 측면에서: </span></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;"> 1. 데이터가 올바른 경우 정렬을 완료하는 데 한 번의 이동만 필요합니다. 필요한 비교 횟수<span style="line-height: 1.5;">와 레코드 이동 횟수</span>가 모두 최소값에 도달합니다. 즉, C<sub>min</sub>=n-1; M<sub>min</sub>=0; 따라서 버블링 정렬의 가장 좋은 시간 복잡도는 O<sub>(n)입니다. </sub></span></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;"><sub> </sub><span style="line-height: 1.5;">2. 아쉽게도 데이터가 역순인 경우 n-1 </span><span style="line-height: 1.5;"> 패스가 필요합니다. 각 정렬 작업에는 n-i</span> 비교<span style="font-family: Verdana;">(1≤i≤n-1)</span><span style="font-family: 宋体;">가 필요하며, 각 비교에서는 교환 레코드 위치에 도달하기 위해 레코드를 3번 이동해야 합니다. 이 경우 비교 및 이동 횟수가 최대에 도달합니다. <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/ca8563b0fdd9370c1ec2f8b97a00d59c-0.jpg?x-oss-process=image/resize,p_40" class="lazy" alt=""><span style="max-width:90%">버블 정렬의 최악의 시간 복잡도는 O<sub>(n<sup>2</sup>)</sub>입니다. </span></span></span></p>
<p style="margin-left: 60px;"><span style="color: #003300; font-size: 14px;"><span style="font-family: 宋体;"><span style="line-height: 1.5;">요약하면 버블 정렬의 전체 평균 시간 복잡도는 O<sub>(n<sup>2 </sup>)</sub></span></span><span style="line-height: 1.5;">. </span></span></p>
<p style="margin-left: 60px;"><strong><span style="line-height: 1.5; color: #003300; font-size: 14px;">Java 클래식 알고리즘 버블 정렬 코드</span></strong><span style="line-height: 1.5; color: #003300; font-size: 14px;">: </span></p>
<pre class="brush:php;toolbar:false">/*
* 冒泡排序 */public class BubbleSort {
public static void main(String[] args) {
int[] arr={6,3,8,2,9,1};
System.out.println("排序前数组为:");
for(int num:arr){
System.out.print(num+" ");
}
for(int i=0;i<arr.length-1>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println();
System.out.println("排序后的数组为:");
for(int num:arr){
System.out.print(num+" ");
}
}
}</arr.length-1>

클래스 로더는 통합 클래스 파일 형식, 동적로드, 부모 위임 모델 및 플랫폼 독립적 인 바이트 코드를 통해 다른 플랫폼에서 Java 프로그램의 일관성과 호환성을 보장하고 플랫폼 독립성을 달성합니다.

Java 컴파일러가 생성 한 코드는 플랫폼 독립적이지만 궁극적으로 실행되는 코드는 플랫폼 별입니다. 1. Java 소스 코드는 플랫폼 독립적 인 바이트 코드로 컴파일됩니다. 2. JVM은 바이트 코드를 특정 플랫폼의 기계 코드로 변환하여 크로스 플랫폼 작동을 보장하지만 성능이 다를 수 있습니다.

멀티 스레딩은 프로그램 대응 성과 리소스 활용을 향상시키고 복잡한 동시 작업을 처리 할 수 있기 때문에 현대 프로그래밍에서 중요합니다. JVM은 스레드 매핑, 스케줄링 메커니즘 및 동기화 잠금 메커니즘을 통해 다양한 운영 체제에서 멀티 스레드의 일관성과 효율성을 보장합니다.

Java의 플랫폼 독립성은 작성된 코드가 수정없이 JVM이 설치된 모든 플랫폼에서 실행될 수 있음을 의미합니다. 1) Java 소스 코드는 바이트 코드로 컴파일됩니다. 2) 바이트 코드는 JVM에 의해 해석되고 실행됩니다.

javaapplicationscanindeedencounterplatform-specificissuesdespitetejvm'sabstraction.ressistinclude : 1) nativecodeandlibraries, 2) OperatingSystemDifferences, 3) jvmimplementationvariations, 및 4) 어려운 의존성, 개발자, 1)

클라우드 컴퓨팅은 Java의 플랫폼 독립성을 크게 향상시킵니다. 1) Java Code는 바이트 코드로 컴파일되어 다른 운영 체제에서 JVM에 의해 실행되어 크로스 플랫폼 작동을 보장합니다. 2) Docker 및 Kubernetes를 사용하여 Java 응용 프로그램을 배포하여 휴대 성 및 확장 성을 향상시킵니다.

Java'SplatformIndencealLowsDeveloperstowStowRiteCodeOntOnitOniNanyDeviceOroswithajvm. ThisIsachieAdthroughCompilingTobyTecode, thejvMIngretSorcompileStruntime.thistureatureDificallyNatlyBoostedjava'SADOPTIONDUOCROSS-PLAT-PLAT-PLAT-PLAT-PLAT-PLAT-PLAT-PLAT-PPLATION

Docker와 같은 컨테이너화 기술은 Java의 플랫폼 독립성을 대체하기보다는 향상됩니다. 1) 환경 간 일관성을 보장, 2) 특정 JVM 버전을 포함한 종속성 관리, 3) 배포 프로세스를 단순화하여 Java 응용 프로그램을보다 적응 가능하고 관리 할 수 있도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Dreamweaver Mac版
시각적 웹 개발 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
