Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
25 / 25 / 22
Регистрация: 22.02.2015
Сообщений: 125
1

Сортировка обменом

14.02.2016, 15:31. Показов 4103. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть следующая сортировка, которая обменивает элементы массива упорядочивая их по возрастанию до тех пор, пока на каком то проходе этого не потребуется. Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static int[] Sort(int[] mas)
        {
            bool flag;
            do
            {
                flag = false;
                for (int i = 0; i < mas.Length - 1; i++)
                {
                    if (mas[i] > mas[i + 1])
                    {
                        int temp = mas[i + 1];
                        mas[i + 1] = mas[i];
                        mas[i] = temp;
                        flag = true;
                        count++;
                    }
                }
            } while (flag);
            return mas;
        }
Теперь есть вопрос: как можно улучшить этот алгоритм?
Пытался сделать так, чтобы с каждым проходом его длина уменьшалась на 1, но в таком случае сортируется только первая часть массива, как это можно реализовать?
Прикладываю наработки:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static int[] SortOptim(int[] mas)
        {
            bool flag = true;
            for(int i=0; i<mas.Length-1&&flag; i++)
            {
                flag = false;
                for(int j=i+1; j<mas.Length-i;j++)    
                {
                    if(mas[i]>mas[j])
                    {
                        int temp = mas[j];
                        mas[j] = mas[i];
                        mas[i] = temp;
                        flag = true;
                        count++;
                    }
                }
            }
            return mas;
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2016, 15:31
Ответы с готовыми решениями:

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

Сортировка обменом (пузырьковая)
Ребята, помогите! Надо сделать так, чтобы программа не выполняла лишних действий. А именно чтобы...

Дана последовательность чисел a1, a2 , ., an. Представить в порядке возрастания. Сортировка обменом
Дана последовательность чисел a1, a2 , ..., an. Требуется представить числа в порядке возрастания....

Упорядочить данный массив по возрастанию, используя сортировку линейным выбором с обменом.
Задан массив действительных чисел a1 ,a2,... an. Упорядочить данный массив по возрастанию,...

1
38 / 38 / 52
Регистрация: 03.02.2016
Сообщений: 99
14.02.2016, 21:09 2
Если я правильно понял, вы хотите реализовать обычную сортировку (пузырьком).
C#
1
2
3
4
5
6
7
8
9
10
11
12
 for (int i = 0; i < arr.Length; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    if (arr[i] < arr[j])
                    {
                        arr[j] ^= arr[i];
                        arr[i] ^= arr[j];
                        arr[j] ^= arr[i];
                    }
                }
            }
1
14.02.2016, 21:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2016, 21:09
Помогаю со студенческими работами здесь

Упорядочивать копии исходного массива тремя алгоритмами: обменом, выбором, вставками
Написать код решения поставленной задачи. Размерность массива вводится пользователем вручную с...

сортировка обменом
Пожалуста, помогите не могу написать програму сортировка обменом на Visual C++!

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

Сортировка обменом
Можете подробно обьяснить программу??? void sort(int *a, int n); int kol; int main(int argc,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru