Отсортировать массив по убыванию, используя функцию поиска максимального элемента массива - C#
Формулировка задачи:
Всем привет!
Суть такова:
Ввести одномерный массив A, вывести его. Найти номер максимального элемента массива. Отсортировать массив по убыванию, используя функцию поиска максимального элемента массива.
В программе не работает должным образом сортировка
Был дан пример (процедура и функция) на Pascal
P.S.
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(); } } }
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.
Если честно, то не совсем понимаю саму суть этой сортировки через функцию поиска максимального элемента массива
Решение задачи: «Отсортировать массив по убыванию, используя функцию поиска максимального элемента массива»
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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д