Отсортировать массив по убыванию, используя функцию поиска максимального элемента массива - C#

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

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

Всем привет! Суть такова: Ввести одномерный массив A, вывести его. Найти номер максимального элемента массива. Отсортировать массив по убыванию, используя функцию поиска максимального элемента массива. В программе не работает должным образом сортировка
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace sortMass
{
    class Class
    {
        static int[] Input()
        {
            
                Console.WriteLine("введите размерность массива");
                int n = int.Parse(Console.ReadLine());
                int[] a = new int[n];
                for (int i = 0; i < n; ++i)
            try
            {
                {
                    Console.Write("a[{0}]= ", i);
                    a[i] = int.Parse(Console.ReadLine());
                }
            }
            catch (FormatException)
            {
                Console.WriteLine("вводите только целые элементы");
                Console.ReadLine();
                Console.ReadKey();
                break;
               
            }
                return a;
            
        }

        static void Print(int[] a)
        {
            for (int i = 0; i < a.Length; ++i) 
            Console.Write("{0} ", a[i]);
            Console.WriteLine();
        }
 
        static int MaxMas(int[] a)       
        {
            int max = a[0];          
            int p = 0;
            for (int i = 0; i < a.Count(); i++) 
            {
                if (a[i] > max)    
                {
                    max = a[i];  
                    p = i;
                }
            }
            return p;    
     
        }
 
        static void Main()
        {
            int[] myArray = Input();
            Console.WriteLine("Исходный массив:");
            Print(myArray);
            Console.ReadLine();
            int p = MaxMas(myArray);
            Console.Write("Номер максимального элемента массива: ");
            Console.WriteLine(p);
            for (int s = 0; s < myArray.Count(); s++) 
            {
            int imax = MaxMas(myArray);
            int tmp = myArray[imax];
            myArray[imax] = myArray[s];
            myArray[s] = tmp;
            }
            Console.WriteLine("Отсортированный массив:");
            Print(myArray);
            Console.ReadKey();
            
        }
    }
}
Был дан пример (процедура и функция) на Pascal
function MaxMas (a,n:word; Mas: TMas ):word;
var i,P: word;
  Max: integer;
begin
  Max:= Mas[a];
  P:=a;
  for i := a to n do
    if Mas[i] > Max then
    begin
      Max :=  Mas[i];
      P :=i;
    end;
  MaxMas:=P;
end;
 
procedure SortMas (n:word; var Mas: TMas );
var s, IMax: word;
    Max:integer;
begin
  for s := 1 to n-1 do
  begin
    IMax:=MaxMas (s,n,Mas);
    Max:=Mas[IMax];
    Mas[IMax]:=Mas[s];
    Mas[s]:=Max;
  end;
end;
 
end.
P.S.
Если честно, то не совсем понимаю саму суть этой сортировки через функцию поиска максимального элемента массива

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace sortMass
{
    class Class
    {
        static int[] Input()
        {
 
            Console.WriteLine("введите размерность массива");
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];
            for (int i = 0; i < n; ++i)
                try
                {
                    {
                        Console.Write("a[{0}]= ", i);
                        a[i] = int.Parse(Console.ReadLine());
                    }
                }
                catch (FormatException)
                {
                    Console.WriteLine("вводите только целые элементы");
                    Console.ReadLine();
                    Console.ReadKey();
                    break;
 
                }
            return a;
 
        }
 
 
        static void Print(int[] a)
        {
            for (int i = 0; i < a.Length; ++i)
                Console.Write("{0} ", a[i]);
            Console.WriteLine();
        }
        static int MaxMas(int[] a, int startFrom) // Перегрузка, чтобы отсечь первые элементы массива
        // Например startfrom == 2, входной массив {1, 2, 3, 4, 5, 6}, то MaxMas пример массив без первых двух элементов
        {
            int[] temp = new int[a.Count()-startFrom];
            for (int i = 0; i < temp.Count(); i++)
                temp[i] = a[i + startFrom];
            return MaxMas(temp);
        }
        static int MaxMas(int[] a)
        {
            int max = a[0];
            int p = 0;
            for (int i = 0; i < a.Count(); i++)
            {
                if (a[i] > max)
                {
                    max = a[i];
                    p = i;
                }
            }
            return p;
 
        }
 
        static void Main()
        {
            int[] myArray = Input();
 
            Console.WriteLine("Исходный массив:");
            Print(myArray);
 
            Console.WriteLine("Номер максимального элемента массива: {0}", MaxMas(myArray)); // p - индекс максимального элемента!
            for (int s = 0; s < myArray.Count(); s++)
            {
                int imax = MaxMas(myArray, s) + s;
                int temp; // Переменная, которая хранит значение для перекидывания элементов
                
                // Меняем местами значения массива
                temp = myArray[s];
                myArray[s] = myArray[imax];
                myArray[imax] = temp;
            }
 
            Console.WriteLine("Отсортированный массив:");
            Print(myArray);
            Console.ReadKey();
        }
    }
}

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


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

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

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