Как отсортировать массив строк
Перейти к содержимому

Как отсортировать массив строк

  • автор:

Сортировка массива строк по алфавиту

Отсортировать массив строк по алфавиту. Учитывать только первый символ каждой строки.

Решение данной задачи мало чем отличается от сортировки чисел, так как буквы алфавита в таблице кодов символов следуют друг за другом. Это значит, например, что буква ‘a’ имеет код на единицу меньше, чем ‘b’. При этом в Паскале не обязательно получать коды букв, можно непосредственно сравнивать сами буквы.

Для того чтобы получить первую букву строки, являющейся элементом массива, надо учесть, что строка сама по себе является своеобразным массивом. Другими словами, мы имеем дело с двумерным массивом. Чтобы извлечь первый элемент вложенных массивов, надо указать второй индекс равный 1. Например, str[i][1] , где i — это текущий элемент массива строк, а 1 — первый символ.

В задаче ниже выбрана сортировка пузырьком. Строки, начинающиеся с букв, которые стоят позже по алфавиту, постепенно переставляются в конец массива.

Программа на языке Паскаль:

const N = 5; var str: array[1..N] of string[20]; s: string[20]; i, j: byte; begin for i:=1 to N do readln(str[i]); for i:=1 to N-1 do for j:=1 to N-i do if str[j][1] > str[j+1][1] then begin s := str[j]; str[j] := str[j+1]; str[j+1] := s; end; writeln; for i:=1 to N do write(str[i], ' '); writeln; end.

Пример выполнения программы:

one two three four five four five one two three 

Как сделать сортировку массива по алфавиту js

Для сортировки массива строк используется метод sort() . Важно учитывать, что он изменяет исходный массив (используют также термин «мутирует»):

list = ["b", "a", "c"]; list.sort() console.log(list); // => ['a', 'b', 'c'] 

В sort() можно передавать также свою функцию для сравнения элементов массива. Без аргументов этот метод располагает строки в алфавитном порядке.

29 октября 2022

Массив, который мы хотим отсортировать в алфавитном порядке:

const animals = ['elephant', 'Dog', 'CAT', 'cow', 'horse', 'Bird']; 

Рассмотрим два способа сортировки:

  • С помощью метода sort() (регистр букв не учитывается):
const sorted = animals.sort((a, b) =>  if (a.toLowerCase()  b.toLowerCase())  return -1; > if (a.toLowerCase() > b.toLowerCase())  return 1; > return 0; >); console.log(sorted); // => ['Bird', 'CAT', 'cow', 'Dog', 'elephant', 'horse'] 
  • С помощью методов sort() и localeCompare() :
const sorted = animals.sort((a, b) => a.localeCompare(b)); console.log(sorted); // => ['Bird', 'CAT', 'cow', 'Dog', 'elephant', 'horse'] 

Сортировка массива строк в Java

В этой статье будут обсуждаться различные методы сортировки массива строк в Java.

1. Сортировать массив строк с помощью Arrays.sort() метод

Мы можем использовать Arrays класс, который имеет несколько статических перегруженных методов для сортировки:

Он сортирует указанный массив строк в порядке возрастания в соответствии с естественным порядком его элементов. Он использует быструю сортировку с двумя опорами, которая обычно быстрее, чем традиционная одноопорная сортировка. Быстрая сортировка.

String [ ] s = < "sort" , "string" , "array" >;
Arrays . sort ( s ) ;
System . out . println ( Arrays . toString ( s ) ) ; // [array, sort, string]

Он сортирует указанный массив строк в соответствии с порядком, заданным указанным компаратором. Он требует, чтобы все элементы массива были взаимно сравнимы указанным компаратором, т.е. для любой пары строк (s1, s2) в массиве, c.compare(s1, s2) не следует бросать ClassCastException . Этот вид использует Итеративная сортировка слиянием и производит стабильную сортировку, что означает сохранение относительного порядка равных строк.

⮚ Чтобы отсортировать по возрастанию:

Отсортировать массив строк в алфавитном порядке

Помогите отсортировать массив строк в алфавитном порядке.
Дано массив, заполненый названиями фруктов, нужно отсортировать массив строк в алфавитном порядке, например :
Дано: груша, яблоко, апельсин, авокадо, ананас
Должно вывести: авокадо, ананас, апельсин, груша, яблоко.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Отсортировать массив сотрудников в алфавитном порядке
Продолжить эту программу и сделать так, чтобы все занесенные сотрудники отображались в алфавитном.

Отсортировать массив символьных элементов в алфавитном порядке
Помогите кто-нибудь. Нужно рассортировать массив символьных элементов в алфавитном порядке. .

Используя указатель рассортировать массив строк в алфавитном порядке
Используя указатель рассортировать массив строк в алфавитном порядке. Может знает кто?

Нарушитель
8936 / 4800 / 1111
Регистрация: 12.03.2015
Сообщений: 22,645
Ну и? Сама программа-то где?
dev — investigator

Эксперт JSЭксперт HTML/CSS

2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696

1 2 3 4 5 6 7 8 9 10 11 12 13
#include #include #include int main() { std::vector std::string> v = {"груша", "яблоко", "апельсин", "авокадо", "ананас"}; std::sort(v.begin(), v.end()); for (auto a : v) { std::cout   <"\n"; } return 0; }

Регистрация: 02.10.2018
Сообщений: 13
а что если масив задан из клавиатуры , как тогда выглядит ваш вариант?
dev — investigator

Эксперт JSЭксперт HTML/CSS

2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
SantaLucia22, ну как-то так. Ввод закончить пустой строкой.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include #include #include int main() { std::string str; std::vector std::string> v; while ( std::cout  <"> " && std::getline(std::cin, str) && ! str.empty() ) v.push_back(str); std::sort(v.begin(), v.end()); for (auto a : v) { std::cout   <"\n"; } return 0; }

Регистрация: 02.10.2018
Сообщений: 13

смотри, нужно ввести с клавы данные в массив, что состоит из 3 елементов; данные должны быть отсортированые в алфавитном порядке.

SantaLucia22, он так и делает.

Меню пользователя Nishen

Регистрация: 02.10.2018
Сообщений: 13
Вот мой вариант кода, но не работает

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
#include #include #include #include #include #include using namespace std; struct TRAIN { char name [100]; int number; int time; }; int main() { const int size = 3; TRAIN arr[size]; cout  "Enter information (name -> number -> time) "; cout  endl; for (int i = 0; i  size; i++) { cin >> arr[i].name; cin >> arr[i].number; cin >> arr[i].time; cout  "Info: naming a clause: "  arr[i].name ". Number of train: "  arr[i].number  ". Departure time: "  arr[i].time  endl; } string str; vector string> v; while ( cout  "> " && getline(cin, str) && ! str.empty() ) v.push_back(str); sort(v.begin(), v.end()); for (auto a : v) { cout  a  "\n"; } return 0; }

Добавлено через 6 минут
надо отсортировать массив arr[i].name
dev — investigator

Эксперт JSЭксперт HTML/CSS

2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696

Лучший ответ

Сообщение было отмечено SantaLucia22 как решение

Решение

SantaLucia22, Ваш вариант кода надо было предоставить с самого начала. А не вводить в заблуждение формулировкой задачи, не имеющей к реальной проблеме никакого отношения. Как это

ЦитатаСообщение от SantaLucia22 Посмотреть сообщение

Помогите отсортировать массив строк в алфавитном порядке.

коррелирует с сортировкой массива структур по полю?

Если особо не менять Ваш код и убрать мое предыдущее решение из него, то как вариант —

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#include #include #define SIZE 3 struct TRAIN { char name [100]; int number; int time; } arr[SIZE]; int cmp(const void* p1, const void* p2) { return strcmp(((TRAIN*)p1)->name, ((TRAIN*)p2)->name); } int main() { std::cout  "Enter information (name -> number -> time)"  std::endl; for (int i = 0; i  SIZE; i++) { std::cin >> arr[i].name; std::cin >> arr[i].number; std::cin >> arr[i].time; std::cout  "next ->"  std::endl; } qsort(arr, SIZE, sizeof(arr[0]), cmp); std::cout  "Sorted array struct ->"  std::endl; for(size_t i = 0; i  sizeof(arr)/sizeof(*arr); ++i) { std::cout  "Info: naming a clause: "  arr[i].name ". Number of train: "  arr[i].number  ". Departure time: "  arr[i].time  std::endl; } }

Регистрация: 02.10.2018
Сообщений: 13
обьясни пожалуйста как работает твой цикл

1 2 3 4 5
cout  "Information for you ->"  endl; for(size_t i = 0; i  sizeof(arr)/sizeof(*arr); ++i) { cout  "Naming a clause: "  arr[i].name ". Number of train: "  arr[i].number  ". Departure time: "  arr[i].time  endl; }

и можно ли по проще сделать?
dev — investigator

Эксперт JSЭксперт HTML/CSS

2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
SantaLucia22,

ЦитатаСообщение от SantaLucia22 Посмотреть сообщение

и можно ли по проще сделать?
он работает также как и

1 2 3 4
for(int i = 0; i  SIZE; ++i) { std::cout  <"Info: naming a clause: "  [i].name <". Number of train: "  [i].number  <". Departure time: "  [i].time  ::endl; }

Просто почему-то подумал, что Вы хоть что-то прочитаете, исследуя предоставленный код. Ошибся — с кем не бывает.

Регистрация: 02.10.2018
Сообщений: 13
Вот что вышло вконце у меня. Задача решена, все спасибо.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
#include #include using namespace std; struct TRAIN { char name [100]; int number; double time; }; int cmp(const void* p1, const void* p2) { return strcmp(((TRAIN*)p1)->name, ((TRAIN*)p2)->name); } int check (TRAIN arr[] , double time, int size) { bool f = false; for ( int i = 0 ; i  size ; i++ ) { if (time  arr[i].time && time != 0 ) f = true; if (f && time != 0) { cout  <"Naming a clause: "  [i].name <". Number of train: "  [i].number  <". Departure time: "  [i].time  ; } } if (!f && time != 0) cout  <"No trains"; return 0; } int main() { const int size = 3; TRAIN arr[size]; cout  <"Enter information (name -> number -> time)"  ; for (int i = 0; i  size; i++) { cin >> arr[i].name; cin >> arr[i].number; cin >> arr[i].time; cout  <"next ->"  ; } qsort(arr, size, sizeof(arr[0]), cmp); for (int i = 0; i  size; i++) { cout  <"Naming a clause: "  [i].name <". Number of train: "  [i].number  <". Departure time: "  [i].time  ; } double time ; while (time != 0) { cout  <"Enter your time or to stop the program"; cin >> time; check(arr,time,size); } }

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Используя указатель рассортировать массив строк в алфавитном порядке
Доброй ночи, ребят! необходимо используя указатель рассортировать массив строк в алфавитном.

Массив строк отсортировать в лексикографическом порядке (возможно ли использовать std::sort?)
У меня есть такая задача: надо массив строк отсортировать в лексикографическом порядке. Так вот.

Отсортировать строки в алфавитном порядке
Помогите сделать задачу.. Отсортировать строки в алфавитном порядке по убыванию. Для критерия.

Отсортировать строки в алфавитном порядке
Помогите с задачей.. Отсортировать строки в алфавитном порядке по убыванию. Для критерия.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *