Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
PayneMax
0 / 0 / 1
Регистрация: 23.03.2016
Сообщений: 52
1

Сортировка массива методом выбора

10.11.2016, 16:32. Просмотров 799. Ответов 10

Всем добрый вечер.Не успеваю решить все задачи Люди помогите
Как можно отсортирововать методом выбора?

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
#include <stdio.h>
#include <locale.h>
#define n 4
int main()
{       int a[n][n],i,j,min,min1;
        setlocale(LC_ALL, "Rus");
        printf("Матрица\n");
        for(i=0;i<n;i++)
        {       for(j=0;j<n;j++)
                {      a[i][j]=rand()%50;
                }
                printf("\n");
        }
        for(i=0;i<n;i++)
        {       for(j=0;j<n;j++)
                        printf("%d   ",a[i][j]);
                printf("\n");
        }
        min=a[0][0];
        for(i=0;i<n/2;i++)
        {
            for(j=0;j<n/2;j++)
                if(min>a[i][j])
                    min=a[i][j];
        }
        for(i=n/2;i<n;i++)
        {
            for(j=n/2;j<n;j++)
            {
                if(min1>a[i][j])
                    min1=a[i][j];
            }
        }
        if(min>min1)
            min=min1;
        printf("\nmin=%d",min);
    return 0;
 }
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2016, 16:32
Ответы с готовыми решениями:

Сортировка одномерного массива методом выбора
Здравствуйте, подскажите кто может, по заданию мне нужно&quot;Сортировка выбором: отыскивается...

Сортировка массива методом прямого выбора
Люди, помогите плиз сортировку массива методом прямого выбора сделать

Не работает сортировка двумерного массива методом простого выбора
Написал программу сортировки двумерного массива методом простого выбора, но она работает не...

Сортировка методом линейного выбора с обменом для массива структур
Задача,отсортировать массив структур по температуре методом линейного выбора с обменом.Вообщем код...

Сортировка методом выбора
Что-то не получается... Может быть сделаете замечания? Или посмотрите на строчки начиная с комента...

10
PayneMax
0 / 0 / 1
Регистрация: 23.03.2016
Сообщений: 52
10.11.2016, 17:04  [ТС] 2
ВОт надо эти 8 элементов отсортировать
0
Изображения
  
MasteRX
31 / 24 / 11
Регистрация: 29.04.2014
Сообщений: 132
Завершенные тесты: 1
07.12.2016, 11:11 3
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include<iostream>
#include<conio.h>
#include<ctime>
#include<stdlib.h>
 
using namespace std;
 
//Метод для вывода в консоль матрицы
const void outputArray(int** szArray /*наш массив*/, const int& iSize/*размер массива*/)
{
    //С новой строки
    printf("\n");
 
    //Выводим поэлементно
    for(int i=0;i<iSize;i++)
    {
        for(int j=0;j<iSize;j++)
        {
            printf("%d\t",szArray[i][j]);
        }
        printf("\n");
    }
}
 
//Функция для поиска минимального значения в последовательности
void minvalue(int** pSequenceItems /*массив указателей на элементы матрицы*/, 
              const int& iSize /*Размер*/)
{
    //для хранения индекса элемента с минимальным значением
    int min = 0;
 
    //размер последовательности элементов = размер матрицы
    int Size = iSize*iSize;
 
    //Ищем минимальное значение
    for(int i=1;i<Size;i++)
    {
        if(*pSequenceItems[i]<*pSequenceItems[min])
            min = i;
    }   
    //Обмен значениями
    swap(*pSequenceItems[0],*pSequenceItems[min]);
}
 
//Сортировка методом выбора
void selectsort(int** ppArray, const int& iSize)
{
    //массив указателей
    int* pItem[100];
    
    //Номер элемента с минимальным значением
    int idMin = 0;
    
    //Номер элемента в массиве указателей (для копирования адресов)
    int pItemSelector=0;
 
    //Цикл для копирования адресов значений матрицы в массив указателей
    for(int i=0;i<iSize;i++)
    {
        for(int j=0;j<iSize;j++)
        {
            pItem[pItemSelector] = &ppArray[i][j];
            pItemSelector++;
        }
    }
 
    //Вызов функции поиска минимального значения
    minvalue(pItem,iSize);
 
    //Поиск и замена значений в массиве указателей
    for(int idx=0;idx<iSize*iSize-1;idx++)
    {
        idMin = idx;
 
        for(int idj = idx+1;idj<iSize*iSize;idj++)
        {
            if(*pItem[idj]<*pItem[idMin])
            {
                idMin = idj;
            }
            swap(*pItem[idx],*pItem[idMin]);
        }
    }
}
 
 
 
 
int main()
{
    //Инициализация рандома
    srand(time(NULL));
    //Настроим русский язык
    setlocale(LC_ALL, "Russian");
    //Размерность матрицы
    int iRazmer;
 
    printf("Введите размерность матрицы: ");
    scanf("%d",&iRazmer);
 
    printf("Размерность матрицы = %d\n",iRazmer);
    
    //Инициализируем массив (матрицу)
    int** ppArray = new int*[iRazmer];
 
    for(int i=0;i<iRazmer;i++)
    {
        ppArray[i] = new int[iRazmer];
    }
 
    //Заполняем случайными значениями
    for(int i=0;i<iRazmer;i++)
    {
        for(int j=0;j<iRazmer;j++)
        {
            ppArray[i][j] = rand()%10;
        }
    }
 
    printf("Заполненная рандомными значениями матрица размерностью %dx%d: \n",iRazmer,iRazmer);
    //Выводим исходную матрицу в консоль
    outputArray(ppArray, iRazmer);
 
    printf("\n");
    //Проводим сортировку выбором
    selectsort(ppArray,iRazmer);
 
    printf("\nОтсортированная матрица по возрастанию методом выбора:\n");
    //Выводим отсортированный массив в консоль
    outputArray(ppArray, iRazmer);
    //Делаем паузу
    system("@pause");
}
0
Миниатюры
Сортировка массива методом выбора  
HighPredator
5801 / 2061 / 732
Регистрация: 10.12.2010
Сообщений: 5,871
Записей в блоге: 3
07.12.2016, 11:43 4
Цитата Сообщение от PayneMax Посмотреть сообщение
Как можно отсортирововать методом выбора?
Алгоритмы сортировок
0
07.12.2016, 11:43
shzgrl
0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 4
09.12.2016, 04:56 5
ВСЕМ ДОБРЫЙ ДЕНЬ! ПОМОГИТЕ СОСТАВИТЬ ТАКУЮ ЖЕ ПРОГРАММУ ТОЛЬКО ДЛЯ НЕУДАЧНЫХ ДНЕЙ, ПОЖАААААЛУЙСТА

Var n,i,j,k:integer;
a:array [1..100] of integer;
begin write ('укажите, сколько дней длился поход:');
readln(n);
write('задавайте высоту каждого дня:');
read(a[1]);
k:=0;
j:=0;
for i:=2 to n do
begin read (a[i]);
if a [i-1]<a[i]
then j:=j+1
else
begin if j>k
then k:=j;
j:=0
end
end;
if j>k
then writeln('максимальное количество удачных дней подряд', j:0)
else writeln('максимальное количество удачных дней подряд*=', k:0)
end.
0
MasteRX
31 / 24 / 11
Регистрация: 29.04.2014
Сообщений: 132
Завершенные тесты: 1
09.12.2016, 06:43 6
Вам на каком языке? C, C++, Delphi, VB?
В вашем примере не на C++/C. А еще было бы лучше если вы скинете текстовое описание задания.
0
shvyrevvg
09.12.2016, 07:28
  #7

Не по теме:

shzgrl, в одном месте исправить < на > ....

0
shzgrl
0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 4
09.12.2016, 07:47 8
Миша вернулся из похода в город со многими перевалами, подъемами, спусками. В конце дня он записывал какую высоту он покорил в этот день. До похода им было принято решение, что день он считает удачным, если он поднялся выше, чем в предыдущий день. Какое максимальное кол-во неудачных дней он совершил
На таком же языке, как и эта задача
0
MasteRX
31 / 24 / 11
Регистрация: 29.04.2014
Сообщений: 132
Завершенные тесты: 1
09.12.2016, 08:02 9
shzgrl, т.е. на том который вы сюда загрузили?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Var n,i,j,k:integer;
a:array [1..100] of integer;
begin write ('укажите, сколько дней длился поход:');
readln(n);
write('задавайте высоту каждого дня:');
read(a[1]);
k:=0;
j:=0;
for i:=2 to n do
begin read (a[i]);
if a [i-1]<a[i]
then j:=j+1
else
begin if j>k
then k:=j;
j:=0
end
end;
if j>k
then writeln('максимальное количество удачных дней подряд', j:0)
else writeln('максимальное количество удачных дней подряд*=', k:0)
end.
0
shzgrl
0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 4
09.12.2016, 08:15 10
Дада)))
0
MasteRX
31 / 24 / 11
Регистрация: 29.04.2014
Сообщений: 132
Завершенные тесты: 1
09.12.2016, 08:18 11
Я пас.
0
09.12.2016, 08:18
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2016, 08:18

Сортировка методом выбора - прокомментировать код
Кто может написать подробно,как программа сортирует елементы. Вот часть программы (метод выбора) ....

Сортировка методом простого выбора по убыванию
Подскажите, подойдет ли эта функция для сортировке методом просто выбора по убыванию. void...

Линейная сортировка матрицы методом простого выбора
Даны целые числа a, b и n. Составить программу сортировки линейной целочисленной матрицы, состоящей...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.