如何将Qsort从C转换为Java



我是一个相当新的编码器。我正在尝试理解以下 c 代码:

int compar (const void *a, const void *b)
{
  return ((int *) a)[0] - ((int *) b)[0];
}

使用:

qsort (&tree[0][0], 8, 3 * sizeof (int), &compar);

这棵树是一个2D阵列,专门为这种情况而言是8x3(它充满了可能的动作,但我认为这与学习此操作无关)。我了解Qsort的前三个参数(尽管第一个调用该地址的原因有点不明显,但我认为这只是C调用数组的方式),但不是第四个。我不明白Qsort是如何使用比较的。我想设计一个与上述Qsort相同的排序方法 java ,尽管我真的不在乎它是快速分类的(因为我可以自由地使用Java要约,而且不一定是快速的。因为这不是任务,所以我只想要一种可以快速排序的分类方法,因此nlogn或某些东西会有所帮助,因为该项目涉及很多递归,并将其称为此事。很多时间)。我正在努力了解比较正在做什么,然后Qsort如何利用它来排序。

unorderStart
 0     -2      1 
 0     -1      2 
 5      1      2 
 5      2      1 
 0      2     -1 
 0      1     -2 
 0     -1     -2 
 0     -2     -1 
unorderEnd
orderStart
 0     -2      1 
 0     -1      2 
 0      2     -1 
 0      1     -2 
 0     -1     -2 
 0     -2     -1 
 5      1      2 
 5      2      1 
orderEnd
unorderStart
 0     -1      3 
 1      0      4 
 3      2      4 
 3      3      3 
 3      3      1 
 3      2      0 
 0      0      0 
 0     -1      1 
unorderEnd
orderStart
 0     -1      3 
 0      0      0 
 0     -1      1 
 1      0      4 
 3      2      4 
 3      3      3 
 3      3      1 
 3      2      0 
orderEnd
unorderStart
 0     -2      5 
 0     -1      6 
 0      1      6 
 0      2      5 
 5      2      3 
 0      1      2 
 0     -1      2 
 0     -2      3 
unorderEnd
orderStart
 0     -2      5 
 0     -1      6 
 0      1      6 
 0      2      5 
 0      1      2 
 0     -1      2 
 0     -2      3 
 5      2      3 
orderEnd
unorderStart
 0      0      4 
 0      1      5 
 0      3      5 
 1      4      4 
 3      4      2 
 2      3      1 
 3      1      1 
 3      0      2 
unorderEnd
orderStart
 0      0      4 
 0      1      5 
 0      3      5 
 1      4      4 
 2      3      1 
 3      4      2 
 3      1      1 
 3      0      2 
orderEnd
unorderStart
 0      2      5 
 0      3      6 
 0      5      6 
 0      6      5 
 0      6      3 
 0      5      2 
 5      3      2 
 0      2      3 
unorderEnd
orderStart
 0      2      5 
 0      3      6 
 0      5      6 
 0      6      5 
 0      6      3 
 0      5      2 
 0      2      3 
 5      3      2 
orderEnd
unorderStart
 3      1      3 
 2      2      4 
 0      4      4 
 0      5      3 
 0      5      1 
 1      4      0 
 2      2      0 
 2      1      1 
unorderEnd
orderStart
 0      4      4 
 0      5      3 
 0      5      1 
 1      4      0 
 2      2      4 
 2      2      0 
 2      1      1 
 3      1      3 
orderEnd
unorderStart
 4      2      1 
 0      3      2 
 0      5      2 
 0      6      1 
 0      6     -1 
 0      5     -2 
 0      3     -2 
 0      2     -1 
unorderEnd
orderStart
 0      3      2 
 0      5      2 
 0      6      1 
 0      6     -1 
 0      5     -2 
 0      3     -2 
 0      2     -1 
 4      2      1 
orderEnd
unorderStart
 2      0      2 
 2      1      3 
 2      3      3 
 2      4      2 
 0      4      0 
 0      3     -1 
 0      1     -1 
 0      0      0 
unorderEnd
orderStart
 0      4      0 
 0      3     -1 
 0      1     -1 
 0      0      0 
 2      0      2 
 2      1      3 
 2      3      3 
 2      4      2 
orderEnd
unorderStart
 0     -2      3 
 0     -1      4 
 2      1      4 
 0      2      3 
 0      2      1 
 2      1      0 
 0     -1      0 
 0     -2      1 
unorderEnd
orderStart
 0     -2      3 
 0     -1      4 
 0      2      3 
 0      2      1 
 0     -1      0 
 0     -2      1 
 2      1      4 
 2      1      0 
orderEnd
unorderStart
 0     -1      5 
 0      0      6 
 0      2      6 
 0      3      5 
 1      3      3 
 7      2      2 
 0      0      2 
 0     -1      3 
unorderEnd
orderStart
 0     -1      5 
 0      0      6 
 0      2      6 
 0      3      5 
 0      0      2 
 0     -1      3 
 1      3      3 
 7      2      2 
orderEnd
unorderStart
 0      1      4 
 0      2      5 
 0      4      5 
 0      5      4 
 0      5      2 
 2      4      1 
 0      2      1 
 0      1      2 
unorderEnd
orderStart
 0      1      4 
 0      2      5 
 0      4      5 
 0      5      4 
 0      5      2 
 0      2      1 
 0      1      2 
 2      4      1 
orderEnd
unorderStart
 6      2      2 
 0      3      3 
 0      5      3 
 0      6      2 
 0      6      0 
 0      5     -1 
 0      3     -1 
 1      2      0 
unorderEnd
orderStart
 0      3      3 
 0      5      3 
 0      6      2 
 0      6      0 
 0      5     -1 
 0      3     -1 
 1      2      0 
 6      2      2 
orderEnd
unorderStart
 2      0      1 
 0      1      2 
 0      3      2 
 0      4      1 
 0      4     -1 
 0      3     -2 
 0      1     -2 
 0      0     -1 
unorderEnd
orderStart
 0      1      2 
 0      3      2 
 0      4      1 
 0      4     -1 
 0      3     -2 
 0      1     -2 
 0      0     -1 
 2      0      1 
orderEnd
unorderStart
 0     -2      2 
 0     -1      3 
 1      1      3 
 5      2      2 
 0      2      0 
 0      1     -1 
 0     -1     -1 
 0     -2      0 
unorderEnd
orderStart
 0     -2      2 
 0     -1      3 
 0      2      0 
 0      1     -1 
 0     -1     -1 
 0     -2      0 
 1      1      3 
 5      2      2 
orderEnd
unorderStart
 0     -1      4 
 0      0      5 
 0      2      5 
 2      3      4 
 0      3      2 
 0      2      1 
 0      0      1 
 0     -1      2 
unorderEnd
orderStart
 0     -1      4 
 0      0      5 
 0      2      5 
 0      3      2 
 0      2      1 
 0      0      1 
 0     -1      2 
 2      3      4 
orderEnd
unorderStart
 0      1      5 
 0      2      6 
 0      4      6 
 0      5      5 
 0      5      3 
 1      4      2 
 4      2      2 
 0      1      3 
unorderEnd
orderStart
 0      1      5 
 0      2      6 
 0      4      6 
 0      5      5 
 0      5      3 
 0      1      3 
 1      4      2 
 4      2      2 
orderEnd
unorderStart
 0      2      3 
 0      3      4 
 0      5      4 
 0      6      3 
 0      6      1 
 0      5      0 
 2      3      0 
 0      2      1 
unorderEnd
orderStart
 0      2      3 
 0      3      4 
 0      5      4 
 0      6      3 
 0      6      1 
 0      5      0 
 0      2      1 
 2      3      0 
orderEnd
unorderStart
 1      1      1 
 3      2      2 
 0      4      2 
 0      5      1 
 0      5     -1 
 0      4     -2 
 0      2     -2 
 0      1     -1 
unorderEnd
orderStart
 0      4      2 
 0      5      1 
 0      5     -1 
 0      4     -2 
 0      2     -2 
 0      1     -1 
 1      1      1 
 3      2      2 
orderEnd
unorderStart
 0     -1      2 
 2      0      3 
 0      2      3 
 0      3      2 
 0      3      0 
 0      2     -1 
 0      0     -1 
 0     -1      0 
unorderEnd
orderStart
 0     -1      2 
 0      2      3 
 0      3      2 
 0      3      0 
 0      2     -1 
 0      0     -1 
 0     -1      0 
 2      0      3 
orderEnd
unorderStart
 0     -2      4 
 0     -1      5 
 0      1      5 
 1      2      4 
 2      2      2 
 0      1      1 
 0     -1      1 
 0     -2      2 
unorderEnd
orderStart
 0     -2      4 
 0     -1      5 
 0      1      5 
 0      1      1 
 0     -1      1 
 0     -2      2 
 1      2      4 
 2      2      2 
orderEnd
unorderStart
 0      0      5 
 0      1      6 
 0      3      6 
 0      4      5 
 2      4      3 
 0      3      2 
 0      1      2 
 0      0      3 
unorderEnd
orderStart
 0      0      5 
 0      1      6 
 0      3      6 
 0      4      5 
 0      3      2 
 0      1      2 
 0      0      3 
 2      4      3 
orderEnd
unorderStart
 0      2      4 
 0      3      5 
 0      5      5 
 0      6      4 
 0      6      2 
 0      5      1 
 1      3      1 
 1      2      2 
unorderEnd
orderStart
 0      2      4 
 0      3      5 
 0      5      5 
 0      6      4 
 0      6      2 
 0      5      1 
 1      3      1 
 1      2      2 
orderEnd
unorderStart
 0      1      2 
 0      2      3 
 0      4      3 
 0      5      2 
 0      5      0 
 0      4     -1 
 0      2     -1 
 1      1      0 
unorderEnd
orderStart
 0      1      2 
 0      2      3 
 0      4      3 
 0      5      2 
 0      5      0 
 0      4     -1 
 0      2     -1 
 1      1      0 
orderEnd
unorderStart
 0     -1      1 
 0      0      2 
 0      2      2 
 0      3      1 
 0      3     -1 
 0      2     -2 
 0      0     -2 
 0     -1     -1 
unorderEnd
orderStart
 0     -1      1 
 0      0      2 
 0      2      2 
 0      3      1 
 0      3     -1 
 0      2     -2 
 0      0     -2 
 0     -1     -1 
orderEnd

我认为第一列是以下降的方式进行排序的,但是其他两列发生了什么?行?Java代码不必使用仿制药或任何东西,而事实上,代码越简单,越好。任何帮助将不胜感激,如果您愿意,请解释代码?谢谢

事实证明,数组可以使用编码器可以自定义的比较器。请注意,这基本上是我基于大部分内容所评论的最终产品(至少试图帮助我理解的所有内容)。非常感谢!

public static void reorder(int[][] a){
Arrays.sort(a, new Comparator<int[]>() {
    @Override
    public int compare(final int[] a, final int[] b) {
         Integer c = Integer.valueOf(a[0]);
         Integer d = Integer.valueOf(b[0]);
        return c.compareTo(d);
    }
    });
}

相关内容

  • 没有找到相关文章

最新更新