gpt4 book ai didi

java - 使用快速排序按列对二维数组进行排序

转载 作者:行者123 更新时间:2023-11-30 10:50:19 26 4
gpt4 key购买 nike

我想使用快速排序按特定列对二维数组进行排序。我已经能够实现对一维数组的快速排序。

public class QuickSort1D {

public static void main(String[] args) {
int[] A = {9, 3, 10, 4, 1, 44, 12, 2, 90, 0};
int l = 0;
int r = A.length-1;
QuickSort(A, l, r);
for (int i = 0; i < A.length; i++){
System.out.print(A[i] + " ");
}
}

private static void QuickSort(int[] a, int l, int r) {
int i;
if (r > l){
i = partition(a, l, r);
QuickSort(a, l, i-1);
QuickSort(a, i+1, r);
}
}

private static int partition(int[] a, int l, int r) {
int v = a[r];
int i = l;
int j = r;
int temp;
while (i < j){
while (a[i] < v){
i = i + 1;
}
while ((i < j) && (a[j] >= v)){
j = j - 1;
}
temp = a[i];
if (i < j){
a[i] = a[j];
a[j] = temp;
}else{
a[i] = a[r];
a[r] = temp;
}
}
return i;
}
}

要对二维数组执行此操作,我必须在 QuickSort 方法中包含指定列的参数。我不知道如何从那里开始。

比如数组最初是

{{4, 1, 3},
{6, 0, 2},
{5, 9, 8}}

按第2列排序的数组应该是

{{6, 0, 2},
{4, 1, 3},
{5, 9, 8}}

最佳答案

您在快速排序方法中包含一个参数 int column

然后您只需将每个 a[x] 替换为 a[x][column],而交换方法(if else 和 temp)保持不变。只需将 temp 设为 int[],而不是 int。当然,a 的类型必须是 int[][] 而不是 int[]

完成:)

关于java - 使用快速排序按列对二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35127804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com