0 / 0 / 1
Регистрация: 31.01.2012
Сообщений: 30
1

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

27.03.2013, 17:47. Показов 1441. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Суть такова:
Ввести одномерный массив A, вывести его. Найти номер максимального элемента массива. Отсортировать массив по убыванию, используя функцию поиска максимального элемента массива.
В программе не работает должным образом сортировка
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
Кликните здесь для просмотра всего текста

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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.
Кликните здесь для просмотра всего текста
Если честно, то не совсем понимаю саму суть этой сортировки через функцию поиска максимального элемента массива
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2013, 17:47
Ответы с готовыми решениями:

Создать метод поиска индекса максимального элемента массива
Напишите метод который в качестве входных параметров принимает массив целых чисел. Результатом...

Рекурсивный метод для поиска максимального и минимального элемента массива
Всем привет. Помогите доработать программу: Нужно написать рекурсивный метод для поиска...

Метод для поиска максимального отрицательного элемента одномерного массива
Написал метод, обращаюсь к нему в Main. Студия говорит: ни одна из перегрузок метода &quot;Max_negative&quot;...

Отсортировать массив по убыванию методом выбора максимального элемента
Помогите. Дана задача отсортировать массив ПО УБЫВАНИЮ методом выбора МАКСИМАЛЬНОГО элемента. Вся...

1
19 / 19 / 5
Регистрация: 16.09.2012
Сообщений: 80
27.03.2013, 18:59 2
Я не стал разбираться в твоем коде, просто немного его изменил:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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();
        }
    }
}
Постарался прокомментировать, чтобы ты понял, что к чему.
1
27.03.2013, 18:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2013, 18:59
Помогаю со студенческими работами здесь

Отсортировать массив методом выбора, при помощи поиска минимального элемента, по убыванию
pascal ABC Дан линейный массив, содержащий Nцелых чисел. Отсортировать его методом выбора, при...

Отсортировать часть массива до максимального элемента по возрастанию, а оставшуюся часть по убыванию
Дан одномерный массив, элементы которого различны. Отсортировать часть массива до начальной позиции...

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать
Добрый Вечер! Написал первую часть программы по этому заданию&quot;Ввести массив А. В массив В перенести...

Написать функцию поиска максимального элемента для массива типа void
#include &lt;stdio.h&gt; #include&lt;conio.h&gt; #include &lt;stdlib.h&gt; unsigned int fmax( int*a, unsigned...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru