Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсивный алгоритм сортировки, Упорядочить одномерный массив по возраст 
:(
    Опции темы
Volk07
Дата 17.10.2010, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 16.10.2010

Репутация: нет
Всего: нет



Доброй ночи! Помогите пожалуйста на C# написать рекурсивный метод сортировки одномерного массива методом выбора. Спасибо.
PM MAIL   Вверх
Fortnox
Дата 17.10.2010, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 2
Всего: 22



Код

/// <summary>
        /// Рекурсивная сортировка методом выбора
        /// </summary>
        /// <param name="array">Массив для сортировки</param>
        /// <param name="start">Начальный элемент</param>
        /// <param name="sortDirection">Направление сортировки</param>
        static void Sort(int[] array, int start, SortDirection sortDirection)
        {
            // если достигнут конец массива - выходим
            if (start >= array.Length - 1)
                return;

            // запоминаем элемент для сравнения
            int min = start;
            
            // ищем минимальный элемент, начиная с первого неотсортированного элемента
            for (int index = start + 1; index < array.Length; index++)
            {
                if (sortDirection == SortDirection.Ascending)
                {
                    // если текущий элемент меньше, запоминаем его
                    if (array[index] < array[min])
                    min = index;
                }
                else
                {
                    // если текущий элемент больше, запоминаем его
                    if (array[index] > array[min])
                        min = index;
                }
            }
            
            // меняем местами элементы
            int tmp = array[start];
            array[start] = array[min];
            array[min] = tmp;

            // продолжаем сортировку, переходя к следующему элементу
            Sort(array, start + 1, sortDirection);
        }

PM MAIL   Вверх
Volk07
Дата 17.10.2010, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 16.10.2010

Репутация: нет
Всего: нет



Перечисление SortDirection по неизвестной причине не работает.
PM MAIL   Вверх
Fortnox
Дата 17.10.2010, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 2
Всего: 22



Неизвестной причине?!
Код

var array = new int[] { 8, 5, 2, 6, 9, 3, 1, 4, 7 };
Sort(array, 0, SortDirection.Descending);

// вывод: 9 8 7 6 5 4 3 2 1

var array = new int[] { 8, 5, 2, 6, 9, 3, 1, 4, 7 };
Sort(array, 0, SortDirection.Ascending);
// вывод: 1 2 3 4 5 6 7 8 9

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.