Сортировка методом выбора - C (СИ)
Формулировка задачи:
Что-то не получается... Может быть сделаете замечания? Или посмотрите на строчки начиная с комента "метод сортировки"? В общем помогите вот результат:
Вывод беспорядочных элементов массива:
10 10 1 9 9
Вывод упорядоченных элементов массива:
1 10 9 10 9
#include <stdio.h>
//#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
//#include <iostream>
#define size 5
//using namespace std;
int main(void)
{SetConsoleOutputCP (1251);
puts ("Selection sorting\n\n");
int array[size] = {0}, buffer = 0, min = 0, temp = 0;
srand((unsigned)(time(0)));
printf ("Вывод беспорядочных элементов массива:\n");
for(int z = 0; z < size; z++) //Заполнение массива случ. числами и их вывод
{
array[z] = rand () % 10 + 1;
printf ("%d ", array[z]);
}puts ("\0");
//////////////////////////////////////////////////////////////////////////////
for(int a = 0; a < size; a++) //Метод сортировки
{
min = array[a];
for(int b = 0; b < size - 1; b++)
{
if (min > array[b + 1])
{
min = array[b + 1]; //Минимальный элемент
temp = b + 1; //Номер заменяемой ячейки
}
buffer = array[b];
array[b] = array[temp];
array[temp] = buffer;
}
}
//////////////////////////////////////////////////////////////////////////////
printf ("Вывод упорядоченных элементов массива:\n");
for (int d = 0; d < size; d++) //Вывод отсортированного массива
{
printf ("%d ", array[d]);
}
getch();
puts("\n\n");
}Решение задачи: «Сортировка методом выбора»
textual
Листинг программы
#include <stdio.h>
int main(void)
{
int arr[10] = {9, 8, 7, 6, 5,
4, 3, 2, 1, 0};
int i, j;
for (i = 0; i < 10 - 1; i++) {
int min = i;
for (j = i + 1; j < 10; j++)
if (arr[j] < arr[min])
min = j;
if (min != i) {
int tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
}
}
for (i = 0; i < 10; i++)
printf("%d ", arr[i]);
putchar('\n');
return 0;
}
Объяснение кода листинга программы
В этом коде реализована сортировка массива методом выбора. Список действий:
- Создаётся массив arr[10] с десятью элементами.
- Устанавливаются начальные значения переменных i и j равными 0.
- Цикл for запускается 9 раз, пока i меньше 10.
- Внутри цикла инициализируется переменная min значением i.
- Цикл for запускается 9 раз, пока j меньше 10.
- Внутри цикла сравниваются значения arr[j] и arr[min].
- Если arr[j] меньше arr[min], то min обновляется значением j.
- Если min не равно i, то значения arr[min] и arr[i] меняются местами с помощью временной переменной tmp.
- Цикл for завершается.
- Выводится отсортированный массив с помощью цикла for и функции printf.
- Возвращается 0, чтобы указать, что программа успешно завершилась.