我有一個二維數組,我想根據第一列的內容按降序排序,但是我希望數組保留每一行並移動第二列作爲第一步。把它作爲一個例子;排序2維數組
[2, 5]
[4, 18]
[1, 7]
[9, 3]
將被分爲:
[9, 3]
[4, 18]
[2, 5]
[1, 7]
感謝。
我有一個二維數組,我想根據第一列的內容按降序排序,但是我希望數組保留每一行並移動第二列作爲第一步。把它作爲一個例子;排序2維數組
[2, 5]
[4, 18]
[1, 7]
[9, 3]
將被分爲:
[9, 3]
[4, 18]
[2, 5]
[1, 7]
感謝。
int[][] d2 = {
{2,5},
{4,18},
{1,7},
{9,3}
};
java.util.Arrays.sort(d2, new java.util.Comparator<int[]>() {
public int compare(int[] a, int[] b) {
return b[0] - a[0];
}
});
試試這個:
int[][] test = new int[][]{{2,5}, {4,18}, {1,7},{9,3}};
Arrays.sort(test, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o2[0] - o1[0];
}
});
我沒有測試過這一點,但它應該工作。請注意,您可能想要反轉減法以更改降序。
woops我以爲你的意思是陣列中的第二項。我將索引更改爲0. – 2010-11-11 20:03:34
如果您希望對此使用負整數,請使用'<' and '>'而不是返回差異。否則,差異可能會溢出'int'範圍。 – erickson 2010-11-11 20:08:06
我不能專門講java,但算法應該是可翻譯的。重點是在交換時移動該行的兩個元素(或更多)。
INT變種[N] [2] //你的int數組
// [選擇排序方法]
//我要使用冒泡排序
//爲清楚起見,儘管效率低下
int temp [2];
bool stillSorting = true;
做
{stillSorting = FALSE;
對(INT X = N; X < 1; x--)
{如果(VAR [X] [0]>變種[X-1] [0])
{temp [0] = var [x] [0]; //如果它大於2
temp [1] = var [x] [1]; //考慮使用循環
var [x] [0] = var [x-1] [0];
var [x] [1] = var [x-1] [1];
var [x-1] [0] = temp [0];
var [x-1] [1] = temp [1];
stillSorting = true;
}
}
}
while(stillSorting);
這是哪種編程語言? – 2013-10-08 17:06:40
這只是C++風格的新手僞代碼,因爲那是我當時所熟悉的。 – NMPrado 2017-08-26 22:37:08
這只不過基數排序。它的C代碼如下:
void Rsort(int *a, int n)
{
int i, b[MAX], m = a[0], exp = 1;
for (i = 0; i < n; i++)
{
if (a[i] > m)
m = a[i];
}
while (m/exp > 0)
{
int bucket[10] =
{ 0 };
for (i = 0; i < n; i++)
bucket[a[i]/exp % 10]++;
for (i = 1; i < 10; i++)
bucket[i] += bucket[i - 1];
for (i = n - 1; i >= 0; i--)
b[--bucket[a[i]/exp % 10]] = a[i];
for (i = 0; i < n; i++)
a[i] = b[i];
exp *= 10;
}
}
這裏它對數組中的數字進行操作。編輯代碼以獲取上述問題的代碼並不困難。這裏數組中的每個元素都被認爲是該行的數字。
我對此很困惑。它看起來像你有一對int的一維數組。這不同於二維數組。 – shoebox639 2010-11-11 19:59:18
這是一個二維數組:)它是一個數組數組。值可以被引用爲arr [0] [1]; – 2010-11-11 20:01:35
我知道2D數組的表現是什麼。然而,他所要求的並不合理。是否有一個x乘2的數組,確實應該是一對數組?編輯:好吧看了一些答案後,它看起來像這只是一個非常糟糕的二維數組(反正)。如果他只有一組對象作爲輸入對,那麼OP會更好。 – shoebox639 2010-11-11 20:05:32