【发布时间】:2011-10-29 10:50:36
【问题描述】:
我已经为此奋斗了一段时间,但似乎无济于事。设置是这样的;我有一个二维数组。对于这个数组,我需要遍历每个值并返回对角线邻居(5 个值)。这些邻居将被放入一个新的 1D [5] 数组并进行冒泡排序。然后将返回中间值(中位数)并将其放入新的中位数数组中。
到目前为止,我有提取对角线邻居的方法:
//get diagonals from original DEM
double [] getDiagonals(int i, int j) {
double [] tempArray = new double [5];
tempArray[0] = data[i -1][j +1];
tempArray[1] = data[i -1][j -1];
tempArray[2] = data[i][j];
tempArray[3] = data[i +1][j -1];
tempArray[4] = data[i +1][j +1];
return tempArray;
}
然后我在迭代中使用此方法来获取原始数组中每个值的对角线:
//get diagonals for each
double [] [] bubbles(){
double [] [] datap = new double [298] [298];
for (int i = 1; i < data.length; i++){
for (int j = 1; j < data[i].length; j++) {
if ((i > 0) && (j > 0)) {
if ((i < data.length-1) && (j < data.length-1)){
double [] tempArray = getDiagonals(i, j);
//do something with the tempArray
我认为这就是我要解决的问题。通过测试 getDiagonals 方法可以正常工作。我正在努力将 tempArray 从 bubbles() 方法中取出。如果我将输出设置为 tempArray,它只返回为原始数组的右下角计算的 5 个值。
我尝试在 bubbles() 方法中调用其他方法,以便在那里进行所有处理并返回一个新数组:
//get diagonals for each
double [] [] bubbles(){
double [] [] datap = new double [298] [298];
for (int i = 1; i < data.length; i++){
for (int j = 1; j < data[i].length; j++) {
if ((i > 0) && (j > 0)) {
if ((i < data.length-1) && (j < data.length-1)){
double [] tempArray = getDiagonals(i, j);
double sorted [] = sort(tempArray);
double median = sorted[2];
for (int z = 0; z < datap.length; z++){
for (int y = 0; y < datap[z].length; y++){
datap[z][y] = median;
}
}
}
}
}
}
return datap;
}
再次失败,输出 datap 只是零。上面的 sort() 方法将对角线传递给冒泡排序方法(我知道它适用于它的
我想我的问题是如何在迭代和填充新数组的方法中进行处理?
我希望这是有道理的,但如果您需要更多详细信息,请告诉我。是的,我使用的排序是冒泡排序。我知道它们很垃圾,但这是针对我正在做的一门课程,所以必须使用它。是的,我对 java 还是很陌生。
任何帮助将不胜感激(如果我需要使用您提供的一些代码,我什至会参考您;)
【问题讨论】:
标签: java bubble-sort auto-populate neighbours