有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java试图掌握从0到99999对数字进行排序的算法的概念

我试图掌握排序算法的思想,该算法需要如下工作:

给定一个由0到99999的数字组成的任意数组,我需要编写一个算法来对这些数字进行排序,从最小的开始,到最大的结束。算法应该是这样工作的:在数字为0到9的数组中,每个数字应该分别在十个数组中的一个数组中接收特定位置。(我们得到了简单使用二维矩阵的提示)。例如,数字51525应位于数组5中,数字5673应位于数组0中,因为5673将被解释为05673。这个矩阵将是第一种方法的一部分,这也是我们实际想要排序数字的方法。此外,我们需要第二种方法,我认为,它接收一个一维数组,我们在其中预先输入一个数字。该方法现在应该生成一个扩展数组,并将传输的数组(表示传输的1x1数组中的数字)复制到该数组中。因此,我们现在有一个包含两个元素的数组,一个是以前的数字。这个新数组现在返回了,尽管我不知道如何返回。我们也需要使用递归

我的尝试是这样的:

我们为排序方法提供一个数组,使用一个switch-case构造,将每个数字除以10000,并将它们相对于余数进行定位(案例0,案例1,…)。当然,这里出现的问题是,我们可能会面临这样的情况:我们将在同一字段上复制两个数字,这将覆盖第一个数字。因此,解决方案可能在于第二种方法,在这种方法中,我们使用一个填充了数字的1x1数组,对其进行扩展,然后再次将其返回给排序方法。现在,它可以再次填充数组,如果需要在这个精确的字段上定位另一个数字,我们可以再次扩展数组。这就是我的递归。递归ancor可能如下所示:“如果一个字段不包含数字或只包含一个数字,…”

我现在不明白的是这个想法的实施。例如,如果我扩展一个1x1数组,以便用另一个数字填充它并返回它,那么排序方法应该如何处理它?我的意思是,这不像是我能坚持以前的矩阵

这里我不是要代码,只是想知道是否有人熟悉这种排序算法,是否有人能给我一个正确的方向,我需要去推


共 (1) 个答案

  1. # 1 楼答案

    假设每个数组的元素都是整数。我所熟悉的类似方法适用于列表数组:将所有以5开头的数字放入数组的元素5中

    递归步骤将其传递给一个方法,该方法按第二位排序,然后按第三位排序,依此类推。(请注意,此方法可以与顶部方法相同。)每次传递都会使列表变小,直到最后一位的排序为每个数组元素提供一个元素

    现在,您可以通过自己的方式备份调用堆栈。在每个级别上,只需按从0到9的顺序添加数组元素,就可以得到一个大约是前一级别大小10倍的列表

    清楚到能让你动起来吗