자바 계수 정렬 실현

상세 한 설명 은 8.2 절-계수 정렬 을 보십시오.
자바 코드 는 다음 과 같 습 니 다:
package linetimesort;
/**
 *       n              0 k       ,k     ; 
 *                               
 * @author yuncong
 *
 */
public class CountSort {
	/**
	 * 
	 * @param a       
	 * @param b       
	 * @param k            
	 */
	public void sort(int[] a, int[] b, int k){
		//     c,    
		int[] c = new int[k + 1];
		for (int i = 0; i < c.length; i++) {
			c[i] = 0;
		}
		//     a          
		for (int i = 0; i < a.length; i++) {
			c[a[i]]++;
		}
		/**
		 *     a              ;
		 *       0         0     ,    1  
		 */
		for (int i = 1; i < c.length; i++) {
			c[i] = c[i] + c[i - 1];
		}
		for (int i = 0; i < a.length; i++) {
			/**
			 *     a[i]      x          b  x-1   ,
			 *         0  
			 */
			b[c[a[i]] - 1] = a[i];
			/**
			 *    a[i]    a[i]   ;
			 *    a[i]                 a[i]       
			 */
			c[a[i]]--;
		}
	}
	
	public static void main(String[] args) {
		int[] a = new int[]{3, 1, 14, 5, 6};
		int[] b = new int[5];
		new CountSort().sort(a, b, 14);
		for (int i = 0; i < b.length; i++) {
			System.out.println(b[i]);
		}
	}

}

좋은 웹페이지 즐겨찾기