Java java지도 시간 Java 선택 정렬 알고리즘 구현 및 성능 최적화 기술

Java 선택 정렬 알고리즘 구현 및 성능 최적화 기술

Feb 18, 2024 pm 10:52 PM
최적화 팁 선택 정렬 코드 구현

Java 선택 정렬 알고리즘 구현 및 성능 최적화 기술

Java 선택 정렬 코드의 완벽한 구현 및 최적화 기술

선택 정렬은 정렬되지 않은 배열에서 가장 작은(또는 가장 큰) 요소를 찾아 마지막에 배치하는 것이 기본 아이디어입니다. 정렬된 배열의 전체 배열이 정렬될 때까지 이 단계를 반복합니다. 다음은 Java의 선택 정렬 및 최적화 기술의 전체 구현에 대한 자세한 설명입니다.

선택 정렬의 기본 구현:

public class SelectionSort {
    public static void selectionSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n-1; i++) {
            int minIndex = i;
            for (int j = i+1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }

    public static void main(String[] args) {
        int[] arr = {64, 25, 12, 22, 11};
        selectionSort(arr);
        System.out.println("排序后的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
로그인 후 복사

위 코드에서 먼저 선택 정렬의 주요 방법 selectionSort(int[] arr)。在主方法中,我们先计算数组的长度,然后通过两个嵌套的循环来查找未排序部分中的最小元素,并将其与当前位置的元素进行交换。重复这个步骤直到整个数组排序完成。最后,在main方法中,我们定义了一个示例数组,并调用了selectionSort 정렬 방법을 정의합니다.

선택 정렬의 시간 복잡도는 O(n^2)입니다. 즉, 요소 ​​수가 증가하면 정렬에 필요한 시간이 2차적으로 증가한다는 의미입니다. 그러나 선택 정렬의 효율성을 향상시키기 위해 몇 가지 기술을 사용할 수 있습니다.

최적화 팁 1: 교환 작업 횟수 줄이기

선택 정렬의 각 라운드에서는 정렬되지 않은 부분 중 가장 작은 요소를 찾아 현재 위치의 요소와 교환합니다. 이것이 필요하기는 하지만 각 스왑에 세 가지 할당이 필요한 경우 성능에 영향을 미칠 수 있습니다. 가장 작은 요소의 인덱스 값을 직접 기록한 후 한 번의 할당 작업만 수행하면 교환 횟수를 줄일 수 있습니다. 수정된 코드는 다음과 같습니다.

public class SelectionSort {
    public static void selectionSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n-1; i++) {
            int minIndex = i;
            for (int j = i+1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            if (minIndex != i) {
                int temp = arr[minIndex];
                arr[minIndex] = arr[i];
                arr[i] = temp;
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {64, 25, 12, 22, 11};
        selectionSort(arr);
        System.out.println("排序后的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
로그인 후 복사

최적화 팁 2: 정렬된 부분을 확인하는 판단 추가

각 라운드에서 정렬되지 않은 부분을 순회하여 가장 작은 요소를 찾습니다. 그러나 순회 과정에서 정렬된 부분의 가장 큰 요소가 정렬되지 않은 부분의 가장 작은 요소보다 작은 것으로 확인되면 정렬이 완료된 것이므로 정렬 프로세스를 조기에 종료할 수 있습니다. 수정된 코드는 다음과 같습니다.

public class SelectionSort {
    public static void selectionSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n-1; i++) {
            int minIndex = i;
            boolean sorted = true;
            for (int j = i+1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
                if (arr[j] < arr[j-1]) {
                    sorted = false;
                }
            }
            if (minIndex != i) {
                int temp = arr[minIndex];
                arr[minIndex] = arr[i];
                arr[i] = temp;
            }
            if (sorted) {
                break;
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {64, 25, 12, 22, 11};
        selectionSort(arr);
        System.out.println("排序后的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
로그인 후 복사

위의 최적화 기법을 통해 선택 정렬의 실행 효율성을 향상시킬 수 있습니다.

요약:

선택 정렬은 간단하지만 효율성이 떨어지는 정렬 알고리즘입니다. 교환 작업 횟수를 줄이고 정렬된 부분에 대한 판단을 추가하면 선택 정렬의 효율성을 높일 수 있습니다. 그러나 선택 정렬의 시간 복잡도는 O(n^2)이지만 일부 특정 시나리오에서는 여전히 효과적인 정렬 알고리즘입니다.

이 기사가 선택 정렬을 이해하고 구현하고 일부 최적화 기술을 통해 알고리즘의 효율성을 높이는 데 도움이 되기를 바랍니다.

위 내용은 Java 선택 정렬 알고리즘 구현 및 성능 최적화 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C++의 멀티스레딩 최적화 기술 C++의 멀티스레딩 최적화 기술 Aug 22, 2023 pm 12:53 PM

컴퓨터 기술이 발전하고 하드웨어 성능이 향상되면서 멀티스레딩 기술은 현대 프로그래밍에 필수적인 기술이 되었습니다. C++는 많은 강력한 멀티스레딩 기술을 제공하는 고전적인 프로그래밍 언어입니다. 이 기사에서는 독자가 멀티스레딩 기술을 더 잘 적용할 수 있도록 C++의 몇 가지 멀티스레딩 최적화 기술을 소개합니다. 1. std::thread 사용 C++11에는 멀티스레딩 기술을 표준 라이브러리에 직접 통합하는 std::thread가 도입되었습니다. std::thread를 사용하여 새 스레드 만들기

C++ 재귀 함수의 최적화 기술은 무엇입니까? C++ 재귀 함수의 최적화 기술은 무엇입니까? Apr 17, 2024 pm 12:24 PM

재귀 함수의 성능을 최적화하려면 다음 기술을 사용할 수 있습니다. 꼬리 재귀 사용: 재귀 오버헤드를 방지하려면 함수 끝에 재귀 호출을 배치합니다. 메모: 계산된 결과를 저장하여 반복 계산을 방지합니다. 분할 정복 방법: 문제를 분해하고 하위 문제를 재귀적으로 해결하여 효율성을 향상시킵니다.

ECharts 차트 최적화: 렌더링 성능을 향상시키는 방법 ECharts 차트 최적화: 렌더링 성능을 향상시키는 방법 Dec 18, 2023 am 08:49 AM

ECharts 차트 최적화: 렌더링 성능을 향상시키는 방법 소개: ECharts는 개발자가 다양하고 아름다운 차트를 만드는 데 도움을 줄 수 있는 강력한 데이터 시각화 라이브러리입니다. 그러나 데이터 양이 많을 경우 차트 렌더링 성능이 문제가 될 수 있습니다. 이 기사는 특정 코드 예제를 제공하고 몇 가지 최적화 기술을 소개하여 ECharts 차트의 렌더링 성능을 향상시키는 데 도움이 될 것입니다. 1. 데이터 처리 최적화: 데이터 필터링: 차트에 포함된 데이터의 양이 너무 많은 경우 데이터를 필터링하여 필요한 데이터만 표시할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다.

Go 언어 코드를 C 언어로 변환하는 구현 방법에 대한 자세한 설명 Go 언어 코드를 C 언어로 변환하는 구현 방법에 대한 자세한 설명 Mar 07, 2024 pm 04:15 PM

컴퓨터 기술의 급속한 발전과 함께 프로그래밍 언어도 등장하고 있습니다. 그 중에서도 Go 언어는 단순성, 효율성, 동시성 성능으로 인해 많은 주목을 받았습니다. 그러나 일부 특정 시나리오에서는 성능이나 호환성을 개선하기 위해 Go 언어 코드를 C 언어로 변환해야 할 수도 있습니다. 이 글에서는 Go 언어 코드를 C 언어로 변환하는 구현 방법을 자세히 소개하고 구체적인 코드 예제를 제공합니다. 1. Go 언어의 기본 기능 Go 언어는 Google에서 개발한 오픈 소스 프로그래밍 언어입니다. 배우기 쉽고 동시성이 높으며 가비지 수집 기능이 있습니다.

MySQL 및 PostgreSQL: 성능 비교 및 ​​최적화 팁 MySQL 및 PostgreSQL: 성능 비교 및 ​​최적화 팁 Jul 13, 2023 pm 03:33 PM

MySQL 및 PostgreSQL: 성능 비교 및 ​​최적화 팁 웹 애플리케이션을 개발할 때 데이터베이스는 필수적인 구성 요소입니다. 데이터베이스 관리 시스템을 선택할 때 MySQL과 PostgreSQL은 두 가지 일반적인 선택입니다. 둘 다 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이지만 성능과 최적화에는 약간의 차이가 있습니다. 이 기사에서는 MySQL과 PostgreSQL의 성능을 비교하고 몇 가지 최적화 팁을 제공합니다. 두 데이터베이스 관리를 비교한 성능 비교

최적화 및 경험 공유 - Golang 큐 구현 방법 최적화 및 경험 공유 - Golang 큐 구현 방법 Jan 24, 2024 am 09:43 AM

Golang 큐 구현을 위한 최적화 기술 및 경험 공유 Golang에서 큐는 FIFO(선입선출) 데이터 관리를 구현할 수 있는 일반적으로 사용되는 데이터 구조입니다. Golang이 대기열(컨테이너/목록)의 표준 라이브러리 구현을 제공했지만 경우에 따라 실제 요구 사항에 따라 대기열을 일부 최적화해야 할 수도 있습니다. 이 문서에서는 Golang 대기열을 더 잘 사용하는 데 도움이 되는 몇 가지 최적화 팁과 경험을 공유합니다. 1. 시나리오에 적합한 큐를 선택하고 Gol에 구현합니다.

Go 언어의 http.Transport에 대한 최대 동시성 구성 및 최적화 기술 Go 언어의 http.Transport에 대한 최대 동시성 구성 및 최적화 기술 Jul 20, 2023 pm 11:37 PM

Go의 http.Transport는 HTTP 클라이언트의 연결 재사용을 관리하고 요청 동작을 제어하기 위한 강력한 패키지입니다. HTTP 요청을 동시에 처리할 때 http.Transport의 최대 동시성 구성을 조정하는 것은 성능 향상에 중요한 부분입니다. 이 기사에서는 Go 프로그램이 대규모 HTTP 요청을 보다 효율적으로 처리할 수 있도록 http.Transport의 최대 동시성 수를 구성하고 최적화하는 방법을 소개합니다. 1.http.전송 기본값

MyBatis의 일괄 Insert 문에 대한 최적화 팁 공유 MyBatis의 일괄 Insert 문에 대한 최적화 팁 공유 Feb 22, 2024 pm 04:51 PM

MyBatis는 XML이나 주석을 통해 SQL과 Java 메소드의 매핑을 구현하고 데이터베이스 운영을 위한 다양한 편리한 기능을 제공하는 인기 있는 Java 지속성 계층 프레임워크입니다. 실제 개발에서는 대량의 데이터를 일괄적으로 데이터베이스에 삽입해야 하는 경우가 있기 때문에 MyBatis에서 일괄 Insert 문을 어떻게 최적화하는가가 중요한 문제가 되었습니다. 이 문서에서는 몇 가지 최적화 팁을 공유하고 구체적인 코드 예제를 제공합니다. 1.BatchExecu를 사용하세요

See all articles