Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 基数排序如何适用于一位数列表?_Sorting_Radix Sort - Fatal编程技术网

Sorting 基数排序如何适用于一位数列表?

Sorting 基数排序如何适用于一位数列表?,sorting,radix-sort,Sorting,Radix Sort,我学习了基数排序的工作原理,它是根据单位位数和十位数对数字进行排序,依此类推。 当最大位数为n时,列表将在第n遍之后排序。 但是,它是否适用于一个单位数字列表?如果是,如何进行 编辑: 分拣1 53 20 359 12将遵循以下步骤。 通过1: 堆栈0-20 堆栈1-1 堆栈2-12 堆栈3-53 堆栈4- 堆栈5- 堆栈6- 堆栈7- 堆栈8- 堆栈9-359 20 1 12 53 359 通过2: 堆栈0-1 堆栈1-12 堆栈2-20 堆栈3- 堆栈4- 烟囱5-53 359 堆栈6- 堆

我学习了基数排序的工作原理,它是根据单位位数和十位数对数字进行排序,依此类推。 当最大位数为n时,列表将在第n遍之后排序。 但是,它是否适用于一个单位数字列表?如果是,如何进行

编辑: 分拣1 53 20 359 12将遵循以下步骤。 通过1: 堆栈0-20 堆栈1-1 堆栈2-12 堆栈3-53 堆栈4- 堆栈5- 堆栈6- 堆栈7- 堆栈8- 堆栈9-359 20 1 12 53 359 通过2: 堆栈0-1 堆栈1-12 堆栈2-20 堆栈3- 堆栈4- 烟囱5-53 359 堆栈6- 堆栈7- 堆栈8- 堆栈9- 1 12 20 53 359 通过3: 已经分类了

但是,它将如何适用于此列表?
7.3.2.5.3.1.0?

假设以10为基数的十进制系统,并将每个数字从最低有效到最高有效排序,基数排序将从1的列(10^0)、10的列(10^1)、100的列(10^2)中的数字排序开始,依此类推

为了更简洁地回答您的问题,如果您在每次传递中有10个要排序的存储桶(数组),那么将首先对单个数字进行排序

例如,如果一个包含所有单位数的数组被传递到基数排序中:

[5, 8, 3, 2, 7, 1]
每个存储桶的结果输出如下所示:

[[], [ 1 ], [ 2 ], [ 3 ], [], [ 5 ], [], [ 7 ], [ 8 ], []]
[[], [41, 1], [2], [13], [], [5], [], [], [8], []] // first pass, 1's

[41, 1, 2, 13, 5, 8] // flattened; all single digits are sorted on this pass.


[[1, 2, 5, 8 ], [13], [], [], [41], [], [], [], [], []] // second pass, 10's
[1, 2, 5, 8, 13, 41] // flattened; array is now sorted and returned.
在这个过程之后(或者在有更多数字的情况下,在每个后续过程之前),将使用类似.concat()的方法,按照数组在各自存储桶中的顺序展平数组

因此,如果您在其中添加了两个两位数的数字:

[5, 8, 13, 2, 41, 1];
它看起来像这样:

[[], [ 1 ], [ 2 ], [ 3 ], [], [ 5 ], [], [ 7 ], [ 8 ], []]
[[], [41, 1], [2], [13], [], [5], [], [], [8], []] // first pass, 1's

[41, 1, 2, 13, 5, 8] // flattened; all single digits are sorted on this pass.


[[1, 2, 5, 8 ], [13], [], [], [41], [], [], [], [], []] // second pass, 10's
[1, 2, 5, 8, 13, 41] // flattened; array is now sorted and returned.

希望这有帮助。当我第一次解决这个问题时,我也在想同样的事情。

假设以10为基数的十进制系统,并将每个数字从最低有效到最高有效排序,基数排序将从1的列(10^0)、10的列(10^1)、100的列(10^2)中的数字排序开始,依此类推

为了更简洁地回答您的问题,如果您在每次传递中有10个要排序的存储桶(数组),那么将首先对单个数字进行排序

例如,如果一个包含所有单位数的数组被传递到基数排序中:

[5, 8, 3, 2, 7, 1]
每个存储桶的结果输出如下所示:

[[], [ 1 ], [ 2 ], [ 3 ], [], [ 5 ], [], [ 7 ], [ 8 ], []]
[[], [41, 1], [2], [13], [], [5], [], [], [8], []] // first pass, 1's

[41, 1, 2, 13, 5, 8] // flattened; all single digits are sorted on this pass.


[[1, 2, 5, 8 ], [13], [], [], [41], [], [], [], [], []] // second pass, 10's
[1, 2, 5, 8, 13, 41] // flattened; array is now sorted and returned.
在这个过程之后(或者在有更多数字的情况下,在每个后续过程之前),将使用类似.concat()的方法,按照数组在各自存储桶中的顺序展平数组

因此,如果您在其中添加了两个两位数的数字:

[5, 8, 13, 2, 41, 1];
它看起来像这样:

[[], [ 1 ], [ 2 ], [ 3 ], [], [ 5 ], [], [ 7 ], [ 8 ], []]
[[], [41, 1], [2], [13], [], [5], [], [], [8], []] // first pass, 1's

[41, 1, 2, 13, 5, 8] // flattened; all single digits are sorted on this pass.


[[1, 2, 5, 8 ], [13], [], [], [41], [], [], [], [], []] // second pass, 10's
[1, 2, 5, 8, 13, 41] // flattened; array is now sorted and returned.

希望这有帮助。当我第一次解决这个问题时,我也在想同样的事情。

你认为它会如何工作
n=1
n=8
一样有效。我已经编辑了我的问题。这并不能回答我的问题。你似乎对显而易见的答案手舞足蹈,因为你不相信它。不,我不明白它将如何运作。通过1:堆栈0-7 3 2 5 3 1 0对吗?它将如何排序?当数字都不同时,为什么要将所有这些数字放在同一个堆栈中?你认为它将如何工作
n=1
n=8
一样有效。我已经编辑了我的问题。这并不能回答我的问题。你似乎对显而易见的答案手舞足蹈,因为你不相信它。不,我不明白它将如何运作。通过1:堆栈0-7 3 2 5 3 1 0对吗?它将如何排序?当数字都不同时,为什么要将所有这些数字放在同一个堆栈中?