Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.05.2013
Сообщений: 28

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

19.05.2013, 20:21. Показов 1043. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил отсортировать массив, но выкидывает ошибку Index out of range exception was unhandled и указывает на "i = 0" во втором цикле for. Подскажите как сделать правильно, исходя из этого варианта, другие способы сортировки не интересуют.




C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int c;
            int i;
            int j;
            int size;
            size = Convert.ToInt32(Console.ReadLine());
            int[] ar = new int[size];
            Random r = new Random();
            for(j = 0; j < ar.Length; j++)
                {
                    ar[j] = r.Next(9);
                    Console.WriteLine(ar[j]);
                }
            do
                for (i = 0; i < ar.Length-1;i++)
                {
                    if (ar[i]>ar[i+1])
                    {
                            c = ar[i+1];
                            ar[i+1] = ar[i];
                            ar [i] = c;
                    }
 
 
                }
            while (ar[i]<=ar[i+1]);
            Console.ReadLine();
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2013, 20:21
Ответы с готовыми решениями:

Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка)
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом массиве. Класс описать с помощью...

Сортировка массива подсчётом и ошибка "индекс находится вне границ массива"
Всем привет! В общем такое задание: Разработать 4 функции, реализующие задачу: &quot;Сортировка массивов (пирамидальная, Хоара,...

Сортировка массива
Здравствуйте, подскажите как отсортировать массив из структур по нужному параметру и диапазону индексов. есть структура ...

3
2058 / 487 / 134
Регистрация: 13.11.2008
Сообщений: 929
19.05.2013, 21:06
Попробуйте так
Code
1
for(int j = 0; j < ar.Length; j++)
и так же со всеми циклами.
А объявление int j(и др. переменные циклов for) в начале кода уберите.
0
0 / 0 / 0
Регистрация: 12.05.2013
Сообщений: 28
19.05.2013, 21:15  [ТС]
тогда в while переменная j не видна, все равно надо внешне обьявлять.
И все равно выкидывает тоже самое(
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.05.2013, 01:05
vetal_, Вы раньше на VB не кодили? Я раньше таким стилем (использование индекса после выхода из цикла) пользовался в VB. Код быстрый, но неразборчивый.
Следует учитывать, что в Вашем случае после выхода из цикла индекс увеличивается еще на +1, несмотря на проверку в условии for.

Сверка значений 2 последних индексов массива не может служить показателем того, что все пузырьки достигли поверхности (или своих позиций).
Наиболее быстрая проверка будет через флаг, дабы не проворачивать полный цикл.
Флаг указывает на то, было ли за один проход волны движение хоть одного пузырька (извините, у меня на этот счет свой сленг).

Мой вариант таков:
C#
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
    class Program
    {
        static void Main()
        {
            int t, j, size;
            bool swaps;
            Console.Write("Введите размерность массива: ");
            size = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();
            int[] ar = new int[size];
            Random r = new Random();
            for (j = 0; j < ar.Length; j++)
                ar[j] = r.Next(11);
 
            Program.PrintArray(ar);
 
            do
            {
                swaps = false;
                for (int i = 0; i < ar.Length - 1; i++)
                {
                    if (ar[i] > ar[i + 1])
                    {
                        t = ar[i + 1];
                        ar[i + 1] = ar[i];
                        ar[i] = t;
                        swaps = true;
                    }
                }
            }
            while (swaps);
 
            Program.PrintArray(ar);
            Console.Read();
        }
 
        public static void PrintArray(int[] ar)
        {
            for (int i = 0; i < ar.Length; i ++ )
                Console.Write("{0,4}", ar[i]);
            Console.WriteLine();
        }
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2013, 01:05
Помогаю со студенческими работами здесь

Сортировка массива(
Извините за делитанство. Только недавно занялся изучением этого языка. Не могу сделать задание ( . Необходимо Отсортировать одномерный...

Сортировка массива
У меня стояла задача- Сортировать масив... Я сделал на парное не парное...потом прописал что б все это додало...Вопрос такой- Возможно...

Сортировка массива
Здравствуйте, возникла следующая проблема. Грубо говоря, у меня есть массив, в котором содержится что-то важное. Есть второй массив с...

Сортировка массива
Здравствуйте, подскажите пожалуйста как отсортировать строчный массив по 3 столбцу? пример массива: 1 2 3 4 5 6 7 8 9

Сортировка массива
int n, buf; Console.WriteLine(&quot;Dlina massiva=&quot;); n = int.Parse(Console.ReadLine()); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru