Учитывая массив случайно расположенных строчных букв, прописных букв и цифр.Как отсортировать строку по номерам и порядковым номерам?
Как я могу отсортировать массив таким образом, чтобы все строчные буквы приходили до всех прописных букв, приходили перед всеми цифрами? Классы символов не должны быть в порядке в соответствующих разделах.
ДОЛЖЕН РАБОТАТЬ В O (n) времени и O (1) пространстве. Очевидно, нельзя использовать функцию сборки в сортировке.
Моей мгновенной реакцией является цикл через строку 3 раза, например, ниже.
var newArr = [];
for x in oldArr
if x is lowercase
newArr.add(x)
for x in oldArr
if x is uppercase
newArr.add(x)
for x in oldArr
if x is number
newArr.add(x)
Но это использует память O (n).
Использование Radix сортировки или подсчета сортировки. Прочитайте об этом, напишите код, и если вы застряли, вернитесь сюда. Radix - это не сортировка. Все сопоставления сортировки имеют нижнюю границу Ω (n log n). –
Вы можете получить представление о том, как получить форму счисления, подсчета и сортировки ведра отсюда - http://stackoverflow.com/questions/14368392/radix-sort-vs-counting-sort-vs-bucket-sort-whats-the-difference –
https : //en.wikipedia.org/wiki/Dutch_national_flag_problem: проблема состоит в том, чтобы разбивать вектор элементов с тремя цветами, чтобы элементы были смежными по цвету. AIUI, это именно то, что вы пытаетесь сделать. – rici