Arrays.sort () работает по-разному для int [] и String для одного и того же ввода, почему? - PullRequest
0 голосов
/ 12 мая 2018

Я работал над решением этой проблемы из leetcode https://leetcode.com/problems/largest-number/description/

Я смотрел на решение и заметил, что сортировка ведет себя по-разному, когда ввод - число против, когда ввод - строка (неподвижное число).

Введите:

[3,30,34,5,9]

Код:

String[] numstoString = new String[nums.length];
for(int i=0;i<nums.length;i++){
    numstoString[i] = Integer.toString(nums[i]);
}

Arrays.sort(numstoString);
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));        
System.out.println(Arrays.toString(numstoString));

Выход:

[3, 5, 9, 30, 34]

[3, 30, 34, 5, 9]

Может ли кто-нибудь просветить меня, как «число» отличается от числа, когда дело доходит до сортировки.

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Сортировка чисел отличается от сортировки строк, когда вы сортируете числа, вы фактически сравниваете значения, в которых 3 < 5 < 9 < 30 < 34, однако при преобразовании их в строку разделение строк происходит посимвольно путем преобразования их в значения ASCII, 34 < 5 потому что первая цифра 3 < 5

0 голосов
/ 12 мая 2018

В случае int[] числовое значение используется для сортировки списка, поэтому 5 <9 <30 ... </p>

В случае String[] числовые значения каждого символа в строкеиспользуется для сравнения.Таким образом, «30» приходит для «5», потому что значение ASCII «3» ниже, чем «5».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...