@Anton_repr

Как поменять элементы массива местами?

Мне нужно сравнить 1ый элемент массива с другими элементами, найти больший. Затем этот больший записать вместо 2 элемента
int[] array = new[] { 1, 2, 3, 4, 5 };
            int first = array[0];
            int second = array[1];
            foreach(int i in array)
            {
                if (i > first)
                {
                    second = i;
                    
                    break;
                }              
            }

           for(int q = 0; q<array.Length; q++)
            {
                Console.WriteLine(array[q]);
            }
     
           
            Console.ReadKey();

Но почему-то выводится исходный массив
  • Вопрос задан
  • 4803 просмотра
Решения вопроса 2
Collin
@Collin
Вы описали алгоритм сортировки пузырьком.

Его реализация:

int[] array = new[] { 1, 2, 3, 4, 5 };
int temp;
            for (int i = 0; i < array.Length-1; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[i] > array[j])
                    {
                        temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }


Теперь просто примените этот алгоритм к своей конкретной задаче.
Ответ написан
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
для начала - у вас в коде нет ни одного изменения самого массива ))

далее.. в чем трудности?
допустим мы хотим поменять пару элементов местами
int[] array = new[] { 1, 2, 3, 4, 5 };
var tmp = array[0];
array[0] = array[1];
array[1] = tmp;

про поиск
int[] array = new[] { 1, 2, 3, 4, 5 };
var maxindex  = 0;
var max = array[maxindex];
for(var i = maxindex; i<array.Length; i++)
    if (array[i] > max)
    {
       maxindex  = i;
       max = array[i];
    }

бонус (функциональный синтаксический сахар)
var array = new[] { 1, 2, 3, 4, 5 };
(array[0], array[1]) = (array[1], array[0]);
.. и поиск
var array = new[] { 1, 2, 3, 4, 5 };
var (maxindex, max)  = (0, array[0]);
for(var i = maxindex; i<array.Length; i++)
    if (array[i] > max)
       (maxindex, max) = (i, array[i]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы