Как отсортировать массив строк в алфавитном порядке
Перейти к содержимому

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

  • автор:

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

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

Решение данной задачи мало чем отличается от сортировки чисел, так как буквы алфавита в таблице кодов символов следуют друг за другом. Это значит, например, что буква ‘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 

Сортировка массива по алфавитном порядке, без исползоваия метод sort(можно исползовать for, if else, compare)

В принципе все очень просто. Есть два варианта решения данной задачи.

  1. Можно сравнить строки. public static int Compare (string? strA, string? strB); Соответственно сортируем исходя из данного метода (https://docs.microsoft.com/ru-ru/dotnet/api/system.string.compare?view=net-5.0)
  2. Можно заморочиться чуть побольше и сравнивать символы public int CompareTo (char value); (https://docs.microsoft.com/ru-ru/dotnet/api/system.char.compareto?view=net-5.0)

Все, что осталось сделать это выбрать алгоритм сортировки. (https://programm.top/c-sharp/algorithm/array-sort/bubble-sort/). Я реализовал самое простое, сортировку пузырьком.

Чтобы совсем не решать за Вас задачу, её отладкой не занимался и она содержит неточности. Так, что перебор вариантов и нахождение ошибок, возложу на плечи студента, а сам принцип в программе прослеживается.

 using System; using System.Linq; public class Sort < // Start Point. static void Main() < var months = new string[] < "aa", "aaa", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" >; // Variables for sort. var sortedByLibrary = months.Select(x => x).ToArray(); var sortedByHand = months.Select(x => x).ToArray(); // Sort By Library. Array.Sort(sortedByLibrary); // Sort By Hand. BubbleSort(sortedByHand); // Output. Console.WriteLine( sortedByLibrary.SequenceEqual(sortedByHand) ? "OK" : "Error"); Console.WriteLine("Input array: " + string.Join(", ", months)); Console.WriteLine("Library sorted array: " + string.Join(", ", sortedByLibrary)); Console.WriteLine("Hand sorted array: " + string.Join(", ", sortedByHand)); > // Bubble sort for our Massive. private static void BubbleSort(string[] array) < var len = array.Length; for (var i = 1; i < len; i++) < for (var j = 0; j < len - i; j++) < // If Char Compare. //if(CompareWords(array[j], array[j + 1])) //< // Swap(ref array[j], ref array[j + 1]); //>// If Strings Compare. if(String.Compare(array[j], array[j + 1]) > 0) < Swap(ref array[j], ref array[j + 1]); >> > > private static bool CompareWords(string word1, string word2) < // Input params. var word1CharArray = word1.ToCharArray(); var word2CharArray = word2.ToCharArray(); var word1CharArrayLen = word1CharArray.Length; var word2CharArrayLen = word2CharArray.Length; for (var i = 0; i < word1CharArrayLen; i++) < if(i else if(word1CharArray[i].CompareTo(word2CharArray[i]) > 0) < return true; >> > return false; > // Swap Elements. static void Swap(ref string element1, ref string element2) < var temp = element1; element1 = element2; element2 = temp; >> 

Сортировка строк по алфавиту. Как это подробно работает?

marlaaa, неправильно понял. j — это слова. Два вложенных цикла по словам — это сортировка пузырьком.

Как компилятор понимает какая буква больше?

Каждая буква представлена своим кодом. Обычно это ASCII-код. Больше та буква у которой больше код.
marlaaa @marlaaa Автор вопроса
jcmvbkbc, А зачем два цикла по словам?

зачем два цикла по словам?

marlaaa, потому что за один проход внутреннего цикла только один «пузырёк» (максимальное слово в неотсортированной части массива) «всплывает» (перемещается в конец, на своё окончательное место).
См, например, https://habr.com/ru/post/204600/

marlaaa @marlaaa Автор вопроса
jcmvbkbc, т.е когда мы сравниваем слова мы сравниваем и все буквы в слове по очереди?

когда мы сравниваем слова мы сравниваем и все буквы в слове по очереди?

marlaaa, да, до первой неравной пары. См.
Решения вопроса 0
Ответы на вопрос 0
Ваш ответ на вопрос

Войдите, чтобы написать ответ

cpp

  • C++

Как передать в аргумент функцию, и выполнить её, передаваю в неё параметры?

  • 1 подписчик
  • 9 часов назад
  • 79 просмотров

Сортировка массива объектов по алфавиту в JavaScript

Работа с массивами является важной частью программирования на JavaScript. Одна из распространенных задач — сортировка массива объектов по одному из свойств объекта.

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

var users = [ < name: 'Bob', email: 'bob@example.com', >, < name: 'Alice', email: 'alice@example.com', >, < name: 'Charlie', email: 'charlie@example.com', >];

В данном случае, цель — отсортировать этот массив по именам пользователей в алфавитном порядке.

В JavaScript есть встроенный метод массива под названием sort() , который может быть использован для сортировки элементов массива. Однако, стандартное поведение sort() может не подходить для сортировки объектов, поскольку он сортирует элементы как строки.

Чтобы сортировать массив объектов по определенному свойству, нужно предоставить свою функцию сравнения в качестве аргумента для sort() . Функция сравнения принимает два аргумента и возвращает число, которое определяет, какой из двух аргументов идет первым.

Вот пример функции сравнения, которая сортирует объекты по свойству name в алфавитном порядке:

users.sort(function(a, b) < if (a.name < b.name) < return -1; >if (a.name > b.name) < return 1; >// если имена равны return 0; >);

Эта функция сравнения говорит методу sort() , что если name первого объекта меньше name второго, то первый объект должен идти раньше. Если name первого объекта больше, то он должен идти позже. Если имена равны, порядок объектов не важен.

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

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

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