정렬 선택(자바 구현)

정렬 선택:먼저 요소 에서 가장 작은 요 소 를 찾 습 니 다.그 다음 에 첫 번 째 요소 와 위 치 를 교환 하고 나머지 요소 에서 가장 작은 요소 와 배열 에서 두 번 째 요소 의 교환 위 치 를 찾 습 니 다.이렇게 반복 합 니 다.배열 정렬 할 때 까지(매번 정렬 할 요소 에서 가장 작은 요소 나 최대 자 를 선택 합 니 다).Java 코드 구현:
//    :                 
    public static void selectionSort(int[] a){
        int N = a.length;

        for(int i = 0; i < N - 1; i++){
            int min = i;
            for(int j = i + 1; j < N; j++){
                // a[i] a[i+1...N-1]        
                if(a[j] < a[min]){//    
                    min = j;
                }
            }
            if(min != i){
                int temp = a[i];
                a[i] = a[min];
                a[min] = temp;
            }
        }
    }

알고리즘 성능 분석:시간 복잡 도 는 O(N^2)이 고 길이 가 N 인 배열 에 대해 N(N-1)/2 차 비교 와 0 에서 N-1 차 교환 이 필요 합 니 다.가장 좋 은 상황 은 이미 질서 가 있 고 0 번 교환 하 는 것 이다.최 악의 경우 N-1 회 교환 하기;역순 교환 N/2 회.불안,예 를 들 어 3325,첫 번 째 3 회 와 2 가 교환 되 어 처음에 뒤에 있 던 3 열 이 첫 번 째 3 위 에 올 랐 다.로 버 트 Sedgewick/Kevin Wayne 이 작성 한'알고리즘'4 판 선택 정렬 을 본 후에 프로그램 이 알고리즘 교환 횟수 를 증가 시 키 고 교환 작업 을 내부 순환 에 넣 어서 정렬 할 요소 중 최소 요소 보다 작은 것 만 있 으 면 교환 작업 이 발생 할 수 있 음 을 발견 했다.실제로 정렬 할 최소 요 소 를 찾 은 다음 에 이전의 최소 요소 와 교환 할 수 있다.많은 시간 을 절약 할 수 있다.

좋은 웹페이지 즐겨찾기