계수 정렬 자바 구현

1298 단어 자바계수 정렬
전형 적 인 공간 으로 시간 을 바 꾸 는 선형 알고리즘 은 본 알고리즘 이 정렬 해 야 할 배열 요 소 는 모두 부정 정수 이지 만 알고리즘 을 수정 하여 부동 소수점 과 음수 의 정렬 에 적응 하도록 할 수 있다.
코드:
/**
 *                          (0 k),(         ,    
 *         ,         ,           )
 *
 * @author Hersules
 */
public class CountingSort {
    public static int[] countingSort(int[] a) {
        int[] b = new int[a.length];
        // 1、          
        int largest = 0;
        for (int i = 0; i < a.length; i++) {
            if (a[i] > largest)
                largest = a[i];
        }
        // 2、        c
        int[] c = new int[largest + 1];
        for (int i = 0; i < c.length; i++) {
            c[i] = 0;
        }
        // 3、                  
        for (int i = 0; i < a.length; i++) {
            c[a[i]]++;
        }//   c[m]    m     
        // 4、  
        for (int i = 1; i < c.length; i++) {
            c[i] += c[i - 1];
        }//   c[m]        m        
        // 5、  
        for (int j = a.length - 1; j >= 0; j--) {
            b[c[a[j]] - 1] = a[j];
            c[a[j]]--;
        }
        return b;
    }
}

좋은 웹페이지 즐겨찾기