Сортировка выбором - C (СИ) (150153)

Узнай цену своей работы

Формулировка задачи:

Нужно отсортировать массив по возрастанию
#include<stdio.h>
int main()
{
 int temp=0;
 int  j=1,i=5;
 int Arr[i];
 Arr[0]=5;
 Arr[1]=4;
 Arr[2]=3;
 Arr[3]=2;
 Arr[4]=1;
 printf("%i",Arr[0]);
 printf("%i",Arr[1]);
 printf("%i",Arr[2]);
 printf("%i",Arr[3]);
 printf("%i",Arr[4]);
 
}

Решение задачи: «Сортировка выбором»

textual
Листинг программы
#include<stdio.h>
 
void selectSort(int* arr, int size) 
{
    int tmp, i, j, pos;
    for(i = 0; i < size; ++i) // i - номер текущего шага
    { 
        pos = i; 
        tmp = arr[i];
        for(j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента
        {
            if (arr[j] < tmp) 
            {
               pos = j; 
               tmp = arr[j]; 
            }
        }
        arr[pos] = arr[i]; 
        arr[i] = tmp; // меняем местами наименьший с a[i]
    }
}
 
int main()
{
 int temp=0;
 int  j=1,i=5;
 int Arr[i];
 Arr[0]=5;
 Arr[1]=4;
 Arr[2]=3;
 Arr[3]=2;
 Arr[4]=1;
 slectionSort(Arr, 5);
 printf("%i",Arr[0]);
 printf("%i",Arr[1]);
 printf("%i",Arr[2]);
 printf("%i",Arr[3]);
 printf("%i",Arr[4]);
 
}

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

  1. Включаем заголовочный файл для использования функций ввода-вывода
  2. Задаём размер массива Arr в функции main() равным 5
  3. Инициализируем элементы массива Arr в функции main()
  4. Вызываем функцию selectSort(Arr, 5) для сортировки массива Arr
  5. Выводим отсортированный массив Arr в функции main() с помощью функции printf()
  6. Значения переменных i и j в функции main() инициализируются как 5 и 1 соответственно.
  7. Значение переменной temp в функции main() инициализируется как 0.
  8. Значения переменных Arr[0], Arr[1], Arr[2], Arr[3], Arr[4] в функции main() инициализируются как 5, 4, 3, 2, 1 соответственно.
  9. В цикле выбора наименьшего элемента внутренний цикл for(j = i + 1; j < size; ++j) выполняется от i+1 до size-1 раз.
  10. Внутренний цикл for(j = i + 1; j < size; ++j) выполняется столько раз, сколько существует элементов в массиве, начиная с элемента, следующего за текущим элементом.
  11. Переменная pos в функции selectSort(int* arr, int size) инициализируется как i.
  12. Переменная tmp в функции selectSort(int* arr, int size) инициализируется как arr[i].
  13. Переменная size в функции selectSort(int* arr, int size) инициализируется как размер массива arr.
  14. Переменная i в функции selectSort(int* arr, int size) инициализируется как 0 и увеличивается на 1 на каждой итерации внешнего цикла for(i = 0; i < size; ++i).
  15. На каждой итерации внешнего цикла for(i = 0; i < size; ++i) внутренний цикл for(j = i + 1; j < size; ++j) выполняется заново, начиная с элемента, следующего за текущим элементом.
  16. Внутренний цикл for(j = i + 1; j < size; ++j) выполняется столько раз, сколько существует элементов в массиве, начиная с элемента, следующего за текущим элементом.
  17. Если arr[j] меньше, чем tmp, то переменная pos обновляется до j, а переменная tmp обновляется до arr[j].
  18. Переменная pos в функции selectSort(int* arr, int size) используется для хранения текущего наименьшего индекса.
  19. Переменная tmp в функции selectSort(int* arr, int size) используется для временного хранения наименьшего элемента.
  20. Внутренний цикл for(j = i + 1; j < size; ++j) выполняется столько раз, сколько существует элементов в массиве, начиная с элемента, следующего за текущим элементом.

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


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

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

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