java 合并排序_java合并排序

程序编译时出现错误——Exceptioninthread"main"java.lang.Error:无法解析的编译问题:类型不匹配:不能从int转换为ComparableatmergeSort.main(mergeSort.java:7)请各位Java高手帮我...

程序编译时出现错误——

Exception in thread "main" java.lang.Error: 无法解析的编译问题:

类型不匹配:不能从 int 转换为 Comparable

at mergeSort.main(mergeSort.java:7)

请各位Java高手帮我调试一下,谢谢了,感激不尽!!!

程序如下:

public class mergeSort {

public static void main(String args[]) {

Comparable a[] = {3, 6, 4, 12, 8, 5, 14 };

mergeSort(a);

aprint(a);

}

public static void mergeSort(Comparable a[]) {

Comparable b[] = new Comparable[a.length];

int s = 1;

while (s < a.length) {

mergePass(a, b, s);// 合并到数组b

s += s;

mergePass(b, a, s);// 合并到数组a

s += s;

}

}

/*

* 合并排好序的相邻数组段

*/

public static void mergePass(Comparable x[], Comparable y[], int s) {

// 合并大小为s的相邻数组

int i = 0;

while (i <= (x.length - 2 * s)) {

// 合并大小为s的相邻二段子数组

merge(x, y, i, i + s - 1, i + 2 * s - 1);

i = i + 2 * s;

}

// 剩下的元素个数小于2s

if ((i + s) < x.length)

merge(x, y, i, i + s - 1, x.length - 1);

else

// 复制到y

for (int j = i; j < x.length; j++)

y[j] = x[j];

}

public static void merge(Comparable c[], Comparable d[], int l, int m, int r) {

// 合并c[l:m]和c[m+1:r]到d[l:r]

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

while ((i <= m) && (j <= r))

if (c[i].compareTo(c[j])<=0)

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];

}

public static void aprint(Comparable b[]) {

System.out.println("数组长度:" + b.length);

System.out.println("合并排序后输出如下:");

for (int i = 0; i < b.length; i++)

System.out.println(b[i]);

}

}

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值