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

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть следующая сортировка, которая обменивает элементы массива упорядочивая их по возрастанию до тех пор, пока на каком то проходе этого не потребуется. Код:
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, но в таком случае сортируется только первая часть массива, как это можно реализовать? Прикладываю наработки:
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;
        }

Решение задачи: «Сортировка обменом»

textual
Листинг программы
 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];
                    }
                }
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5
Похожие ответы