Не изменяя данный массив, вывести номера его элементов в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность - C#

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

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

Дан массив A размера N. Не изменяя данный массив, вывести номера его элементов в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность. Использовать метод «пузырьковой» сортировки (см. задание Array112), модифицировав его следующим образом: создать вспомогательный целочисленный массив номеров I, заполнив его числами от 1 до N; просматривать массив A, сравнивая пары элементов массива A с номерами I1 и I2, I2 и I3, … и меняя местами соответствующие элементы массива I, если левый элемент пары больше правого. Повторив описанную процедуру просмотра N – 1 раз, получим в массиве I требуемую последовательность номеров.

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication27
{
    class Program
    {
        static int[] Input()
        {
            Console.WriteLine("Введите размерность массива");
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];
            for (int i = 0; i < n; ++i)
            {
                Console.Write("a[{0}]= ", i);
                a[i] = int.Parse(Console.ReadLine());
            }
            return a;
        }
 
        static void Print(int[] a)
        {
            for (int i = 0; i < a.Length; ++i) Console.Write("{0} ", a[i]);
            Console.WriteLine();
        }
 
 
        static void Main()
        {
            int buf, buf2;
            int[] t = Input();
            int[] k = new int[t.Length];
            for (int i = 0; i < t.Length; ++i)
                k[i] = i;
                Console.WriteLine("Исходный массив:");
            Print(t);
            Console.WriteLine("Номера элементов, которые образуют возрастающую последовательность: ");
            for (int j = t.Length - 1; j > 0; --j)
                for (int i = 0; i < j; ++i)
                {
                    if (t[i] > t[i+1])
                    {
                        buf = t[i];
                        t[i] = t[i+1];
                        t[i + 1] = buf;
                        buf2 = k[i];
                        k[i] = k[i + 1];
                        k[i + 1] = buf2;
                    }
                }
                Print(k);
        }
 
    }
}

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


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

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

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