【发布时间】:2013-11-08 21:18:21
【问题描述】:
我正在尝试编写一个程序,该程序接受由五个四位数字组成的数组,并根据最低有效位对数组进行排序。例如,如果数字是 1234、5432、4567 和 8978,则数组将首先按最后一位数字排序,因此嵌套排序将是 5432、1224、4597、8978。然后是 1224、5432、8978、 4597. 以此类推,直到完全排序。
我已经编写了用于显示数组的代码以及用于排序的部分代码。我不确定如何编写比较每个数字所需的方程式。这是我到目前为止按每个数字排序的代码:
public static void sortByDigit(int[] array, int size)
{
for(int i = 0; i < size; i++)
{
for(int j = 0; j < size; j++)
{
}
for(i = 0; i < size; i++)
{
System.out.println(array[i]);
}
}
}
我不确定在嵌套的 for 循环中放置什么。我想我需要使用模数。
我只是写这个来分隔数字,但我不知道如何交换数字或比较它们。
int first = array[i]%10;
int second = (array[i]%100)/10;
int third = (array[i]%1000)/10;
int fourth = (array[i]%10000)/10;
这会进入 for 循环吗?
【问题讨论】:
-
顺便说一句,我猜你需要做一个稳定的排序,否则这个算法肯定行不通。这意味着,如果您要比较的数字相等,请不要移动数字。
-
我认为这不是问题所在。数字的最后一位怎么读?
-
你是正确的关于需要模数。 en.wikipedia.org/wiki/Modulo_operation知道应该大大简化这个问题
-
另外,您说的是 5 个四位数字,但您的示例是 4 个四位数字。并且您的代码假定数字的数量与位数相同。
-
这到底是什么意思?我以为我可以将每个数字分开,但我认为这行不通,因为我无法比较。