퀵 정렬 알고리즘 소개
퀵 정렬과 병합 정렬은 모두 분할 정복 방법을 사용하여 알고리즘을 설계합니다. 차이점은 병합 정렬은 기본적으로 동일한 길이의 두 하위 배열로 분할한다는 것입니다. , 병합(병합) 작업이 필요하며 하위 배열을 분할할 때 빠른 정렬이 더 예술적입니다. 분할 후 벤치마크 요소의 왼쪽에 있는 요소는 벤치마크 요소보다 작습니다. 오른쪽은 벤치마크 요소보다 작지 않습니다. 이런 식으로 두 하위 배열을 분리하기만 하면 되며 더 이상 병합 정렬과 같은 병합 작업이 필요하지 않습니다. 참조 요소의 선택은 알고리즘의 효율성에 큰 영향을 미칩니다. 가장 좋은 경우는 두 하위 배열의 크기가 기본적으로 동일하다는 것입니다. 단순화를 위해 마지막 요소를 선택합니다. 보다 발전된 접근 방식에서는 먼저 중앙값을 찾아 중앙값을 마지막 요소와 교환한 다음 동일한 단계를 수행합니다. 분할은 퀵소트의 핵심입니다. 퀵 정렬의 최악의 경우 실행 시간은 O(n2)이지만 예상 실행 시간은 O(nlgn)입니다.
빠른 정렬 알고리즘의 Java 구현
1. 배열을 두 개의 하위 배열과 기본 요소로 분할합니다. 마지막 요소를 기본 요소로 선택하고 인덱스 변수는 가장 최근의 위치를 기록합니다. 기본 요소보다 작은 요소의 위치는 start-1로 초기화됩니다. 기본 요소보다 작은 새 요소가 발견되면 인덱스가 1씩 증가합니다. 첫 번째 요소부터 두 번째 요소까지 순서대로 기본 요소와 비교하여 기본 요소보다 작으면 인덱스를 1 증가시키고 위치 인덱스와 현재 위치의 요소를 교환합니다. 루프가 끝난 후 index+1은 기본 요소가 있어야 하는 위치를 가져오고 index+1을 마지막 요소와 교환합니다.
2. 두 개의 하위 배열 [start, index] 및 [index+2, end]를 각각 정렬합니다.
"Insertsort의 Java 구현"과 마찬가지로 먼저 배열 도구 클래스를 구현합니다. 코드는 다음과 같습니다.
public class ArrayUtils { public static void printArray(int[] array) { System.out.print("{"); for (int i = 0; i < array.length; i++) { System.out.print(array[i]); if (i < array.length - 1) { System.out.print(", "); } } System.out.println("}"); } public static void exchangeElements(int[] array, int index1, int index2) { int temp = array[index1]; array[index1] = array[index2]; array[index2] = temp; } }
빠른 정렬의 Java 구현 및 테스트 코드는 다음과 같습니다.
public class QuickSort { public static void main(String[] args) { int[] array = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; System.out.println("Before sort:"); ArrayUtils.printArray(array); quickSort(array); System.out.println("After sort:"); ArrayUtils.printArray(array); } public static void quickSort(int[] array) { subQuickSort(array, 0, array.length - 1); } private static void subQuickSort(int[] array, int start, int end) { if (array == null || (end - start + 1) < 2) { return; } int part = partition(array, start, end); if (part == start) { subQuickSort(array, part + 1, end); } else if (part == end) { subQuickSort(array, start, part - 1); } else { subQuickSort(array, start, part - 1); subQuickSort(array, part + 1, end); } } private static int partition(int[] array, int start, int end) { int value = array[end]; int index = start - 1; for (int i = start; i < end; i++) { if (array[i] < value) { index++; if (index != i) { ArrayUtils.exchangeElements(array, index, i); } } } if ((index + 1) != end) { ArrayUtils.exchangeElements(array, index + 1, end); } return index + 1; } }
빠른 정렬 알고리즘(Quicktsort)의 Java 구현과 관련된 더 많은 기사를 보려면 비용을 지불하세요. PHP 중국어 웹사이트에 주목하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구
