Сортировка выбором - 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]); }
Объяснение кода листинга программы
- Включаем заголовочный файл
для использования функций ввода-вывода - Задаём размер массива Arr в функции main() равным 5
- Инициализируем элементы массива Arr в функции main()
- Вызываем функцию selectSort(Arr, 5) для сортировки массива Arr
- Выводим отсортированный массив Arr в функции main() с помощью функции printf()
- Значения переменных i и j в функции main() инициализируются как 5 и 1 соответственно.
- Значение переменной temp в функции main() инициализируется как 0.
- Значения переменных Arr[0], Arr[1], Arr[2], Arr[3], Arr[4] в функции main() инициализируются как 5, 4, 3, 2, 1 соответственно.
- В цикле выбора наименьшего элемента внутренний цикл for(j = i + 1; j < size; ++j) выполняется от i+1 до size-1 раз.
- Внутренний цикл for(j = i + 1; j < size; ++j) выполняется столько раз, сколько существует элементов в массиве, начиная с элемента, следующего за текущим элементом.
- Переменная pos в функции selectSort(int* arr, int size) инициализируется как i.
- Переменная tmp в функции selectSort(int* arr, int size) инициализируется как arr[i].
- Переменная size в функции selectSort(int* arr, int size) инициализируется как размер массива arr.
- Переменная i в функции selectSort(int* arr, int size) инициализируется как 0 и увеличивается на 1 на каждой итерации внешнего цикла for(i = 0; i < size; ++i).
- На каждой итерации внешнего цикла for(i = 0; i < size; ++i) внутренний цикл for(j = i + 1; j < size; ++j) выполняется заново, начиная с элемента, следующего за текущим элементом.
- Внутренний цикл for(j = i + 1; j < size; ++j) выполняется столько раз, сколько существует элементов в массиве, начиная с элемента, следующего за текущим элементом.
- Если arr[j] меньше, чем tmp, то переменная pos обновляется до j, а переменная tmp обновляется до arr[j].
- Переменная pos в функции selectSort(int* arr, int size) используется для хранения текущего наименьшего индекса.
- Переменная tmp в функции selectSort(int* arr, int size) используется для временного хранения наименьшего элемента.
- Внутренний цикл for(j = i + 1; j < size; ++j) выполняется столько раз, сколько существует элементов в массиве, начиная с элемента, следующего за текущим элементом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д