0

我需要创建一个执行基数排序的方法,该方法使用按位运算符(>>、<<、&、|)从值中检索单个位。

该文件看起来像这样:

0100
1
0011
110
0010
101
0001
11
0000

我目前已读入文件(其大小未知)。起初我将它们作为整数读入,但意识到我正在截断前导零。所以我将它们存储到 String[] 中。

public static void readFile(String fileName) throws FileNotFoundException, IOException
{
    File file = new File(fileName);

    byte[] bytes = new byte[(int) file.length()];
    try (FileInputStream fis = new FileInputStream(file))
    {
        fis.read(bytes);
    }

    String[] value = new String(bytes).split("\\s+");
    numbers = new String[value.length];
    System.arraycopy(value, 0, numbers, 0, value.length);

} // end of import file

这是我目前导入该文件的方法,该文件正在运行。我的所有其他方法都在工作,除了基数排序,我不确定从哪里开始按位运算。

我有排序如何工作的概念,但实施它似乎更具挑战性。

问候,

麦克风

4

1 回答 1

0

我将使用递归排序将数组划分为 3 个新数组:下一个数字 = 0 的数组,下一个数字 = 1 的数组和没有下一个数字的数组。因此,您的数字将按如下方式排序:

Input
0100
1
0011
110
0010
101
0001
11
0000

Step 1
 Array "no next" (empty)
 Array "next = 0"
 0100
 0011
 0010
 0001
 0000
 Array "next = 1"
 1
 110
 101
 11

Step 2 (only showing the array "next = 1")
 Array "no next"
  1
 Array "next = 0"
  101
 Array "next = 1"
  110
  11

继续下去,直到你得到 0 或 1 个大小的数组,这样你就知道它们是排序的。然后你会返回返回排序数组,如快速排序

于 2013-10-15T04:09:01.720 回答