среда, 12 февраля 2014 г.

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

Методом выбора


Реализация сортировки методом выбора по возрастанию:
int main()
{
    int n;
    int mas[100];
    ....
    int min=0;
    for(int i=0; i<n-1; i++) 
    // i - номер прохода, нумеруем проходы от 0
    {
        min = i;
        for(int j=i; j<n; j++) 
        //поиск минимального элемента в неотсортированной части массива 
        {
            if(mas[j]<mas[min])
               {
                   min = j;
               }
        }
        // меняем местами минимальный элемент и элемент номер i
        swap(mas[i], mas[min]);
    }
    .........
}

Методом пузырька

Смотреть пример
Реализация сортировки пузырьком по возрастанию:
int main()
{
    int n;
    int mas[100];
    cin >> n;
    ........

    for(int i=1; i<n; i++) 
    // i - номер прохода, нумеруем проходы от 1
    {
        // проход по неотсортированной части массива
        for(int j=0; j<n-i; j++) 
        {
            // если пара рядом стоящих элементов неупорядочена - меняем их местами
            if(mas[j]>mas[j+1]) 
               {
                   swap(mas[j], mas[j+1]);
               }
        }
    }
    .........
}

вторник, 4 февраля 2014 г.

Подготовка к ЕГЭ. Задача C4: анализ строк

Вам необходимо написать программу анализа текста. На вход программе подаются строки, содержащие английские слова. В одной строке может быть произвольное количество слов. Все слова записаны строчными (маленькими) английскими буквами. Между словами в строке может быть один или больше пробелов, возможны пробелы в начале и в конце строки. Других символов, кроме строчных английских букв и пробелов, в строках нет. Длина каждой строки не превышает 200 символов. Количество строк неизвестно, общее количество слов не более одного миллиона. Конец ввода обозначается строкой, содержащей единственный символ «*».
Напишите эффективную, в том числе по памяти, программу, которая будет определять количество слов, начинающихся на каждую букву английского алфавита, и выводить эти количества и соответствующие им буквы в порядке убывания. Если количество слов, начинающихся на какие-то буквы, совпадает, эти буквы следует выводить в алфавитном порядке. Если на какую-то букву слов нет, выводить эту букву не надо.
Размер памяти, которую использует Ваша программа, не должен зависеть от размера исходного списка.