Util.java

2438 단어 자바C++cC#J#
정렬 에 사용 할 하위 함 수 를 놓 았 습 니 다.

/**
 * Util.java
 * 
 *    
 * 
 * @author Administrator
 */

public class Util {

	/**
	 *     a    i j    .
	 * 
	 * @param a
	 * @param i
	 * @param j
	 */
	public static void swap(int[] a, int i, int j) {

		int temp = a[i];
		a[i] = a[j];
		a[j] = temp;

	}

	/**
	 *       c[l:m] c[m+1:r] d[l:r] .
	 *   :c[l:m] c[m+1:r]      
	 * 
	 * @param c
	 * @param d
	 * @param l
	 * @param m
	 * @param r
	 */
	public static void merge(int[] c, int[] d, int l, int m, int r) {

		int i = l, 
			j = m + 1, 
			k = l;

		while ((i <= m) && (j <= r))
			if (c[i] <= c[j])
				d[k++] = c[i++];
			else
				d[k++] = c[j++];

		if (i > m)
			for (int q = j; q <= r; q++)
				d[k++] = c[q];
		else
			for (int q = i; q <= m; q++)
				d[k++] = c[q];

	}
	
	/**
	 *       b[left:right]     a[left:right]
	 *     :a,b      .
	 * 
	 * @param a
	 * @param b
	 * @param left
	 * @param right
	 */
	public static void copy(int[] a, int[] b, int left, int right){
		for(int i = left; i <= right; i ++)
			a[i] = b[i];
	}

	/**
	 *     x    s        y.
	 * 
	 *   :x,y      .
	 * 
	 * @param x
	 * @param y
	 * @param s
	 */
	public static void mergePass(int[] x, int[] y, int s) {
		
		int i = 0;
		
		int n = x.length;
		
		while( n - 2 * s > i) {
			
			Util.merge(x, y, i, i + s - 1, i + 2 * s - 1);
			
			i += 2*s;
			
		}
		
		//         2s
		
		//      2s  s 
		if(n - i > s) 
			Util.merge(x, y, i, i + s - 1, n-1);
		
		//      s 
		else for(int j = i; j <= n-1; j ++) 
			y[j] = x[j];
		
	}
	
	public static void main(String[] args){
		/*int[] c = new int[]{0,2,3,1};
		
		int[] d = new int[c.length];
		
		
		merge(c,d,0,2,3);
		
		for(int i=0; i<c.length; i++)
			System.out.println(d[i]);
			*/
		System.out.println(1/32);
	}

}

좋은 웹페이지 즐겨찾기