六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 34|回复: 0

Util.java

[复制链接]

升级  1.33%

12

主题

12

主题

12

主题

秀才

Rank: 2

积分
52
 楼主| 发表于 2013-1-27 05:04:09 | 显示全部楼层 |阅读模式
放置了一些排序使用的子函数

/** * 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++];elsed[k++] = c[j++];if (i > m)for (int q = j; q <= r; q++)d[k++] = c[q];elsefor (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);}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表