Сортировка методом выбора - 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;
}

Объяснение кода листинга программы

В этом коде реализована сортировка массива методом выбора. Список действий:

  1. Создаётся массив arr[10] с десятью элементами.
  2. Устанавливаются начальные значения переменных i и j равными 0.
  3. Цикл for запускается 9 раз, пока i меньше 10.
  4. Внутри цикла инициализируется переменная min значением i.
  5. Цикл for запускается 9 раз, пока j меньше 10.
  6. Внутри цикла сравниваются значения arr[j] и arr[min].
  7. Если arr[j] меньше arr[min], то min обновляется значением j.
  8. Если min не равно i, то значения arr[min] и arr[i] меняются местами с помощью временной переменной tmp.
  9. Цикл for завершается.
  10. Выводится отсортированный массив с помощью цикла for и функции printf.
  11. Возвращается 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы