Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Программа в С http://www.cyberforum.ru/c-beginners/thread1847128.html
Задача такова: Ввести строку, вывести на экран только слова начинающиеся с гласной буквы. Проблема в том, что я новичок в программировании на этом языке, и нужно написать программу в простом виде, и...
Напечатать в обратном порядке наименьший элемент последовательности C (СИ)
Пусть имеется последовательность произвольных целых ненулевых чисел, завершающаяся числом 0 (число 0 в последовательность не входит). Количество элементов в последовательности заранее неизвестно,...
C (СИ) Найти сумму нечётных чисел последовательности , количество цифр в которых не превышает заданного числа P
Пусть имеется последовательность произвольных целых ненулевых чисел, завершающаяся числом 0 (число 0 в последовательность не входит). Количество элементов в последовательности заранее неизвестно,...
C (СИ) Наименьшее число в массиве, а так же проверка, является ли оно наименьшее везде Привет! Задача: есть числовой массив, нужно найти такой элемент, который является наименьшим в своей строке и в своем столбце. А если такого нет, то вывести "0". В общем, я очень долго пытался... http://www.cyberforum.ru/c-beginners/thread1847016.html
C (СИ) Switch http://www.cyberforum.ru/c-beginners/thread1846987.html
Есть 3 case - выполняются при 1,2,3 + default. Ввожу какое нибудь левое значение, отличное от 1,2,3 - перескакивает на default, тут все норм. Но если я ввожу например 24, то он выполняет кусок кода...
C (СИ) Как продублировать ВСЕ строки матрицы, удовлетворяющие заданному условию?
У меня дублирует лишь последнюю(
C (СИ) Си, двумерные массивы
Даны квадратная матрица A порядка n и вектор b с n элементами. Получить вектор: A|2b Не понимаю, что значит A|2b? Это же не просто A*2b?
C (СИ) Ошибка в коде! Здравствуйте! Помоги пожалуйста найти ошибку в коде. Между ответами большое расхождение, не должно быть такое! Задание: Даны вещественные числа a, b. Значения функции (согласно вариантам) записать... http://www.cyberforum.ru/c-beginners/thread1846876.html
C (СИ) База данных http://www.cyberforum.ru/c-beginners/thread1846875.html
Привет Дали задание сделать консольную базу данных на С, что бы можно было добавлять, стирать, менять данные. Но дело в том что мы этого даже не начинали проходить. Можете сказать о главных...
C (СИ) Открыть файл, имя которого задается из командной строки В файле записана непустая последовательность целых чисел. Нужно открыть файл на чтение, НО имя файла задается в командной строке. Подскажите, пожалуйста, как это сделать. http://www.cyberforum.ru/c-beginners/thread1846842.html
MasteRX
31 / 24 / 11
Регистрация: 29.04.2014
Сообщений: 132
Завершенные тесты: 1
07.12.2016, 11:11 0

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

07.12.2016, 11:11. Просмотров 779. Ответов 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
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
Миниатюры
Сортировка массива методом выбора  
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2016, 11:11

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

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

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

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