Сортировка - C (СИ) (69769)
Формулировка задачи:
Добрый вечер. Есть такое задание:
Составить программу, которая для массива, заполненного случайными целыми числами, проводит сортировку по неубыванию методом выбора (выделения). Подсчитать количество присваиваний и количество сравнений при сортировке.
Программу я составил, но не знаю, как найти количество присваиваний и сравнений. Помогите, пожалуйста.Решение задачи: «Сортировка»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int c_swap; int c_comp; void VSort(int *A,int n) { int i,j,t,k; for (i=0; i<n-1; i++) { k=i; for (j=i+1; j<n; j++) { if (A[j]<A[k]) k=j; c_comp++; } if (k != i) { t=A[k]; A[k]=A[i]; A[i]=t; c_swap++; } } } int main(int argc, char *argv[]) { int i,Arr[10]={5,2,3,4,1,2,3,4,5,-5}; printf("Array before sorting: \n"); for (i=0; i<10; i++) printf("%d ",Arr[i]); printf("\n"); c_comp=c_swap=0; VSort(Arr,10); printf("Array after sorting: \n"); for (i=0; i<10; i++) printf("%d ",Arr[i]); printf("\n\n"); printf("Number of comparing=%d\n",c_comp); printf("Number of exchanging=%d\n",c_swap); printf("\n"); system("PAUSE"); return 0; }
Объяснение кода листинга программы
В данном коде реализуется сортировка массива методом пузырька.
- Создаются две переменные-счетчика: c_swap и c_comp, которые используются для отслеживания количества выполненных операций обмена и сравнения элементов.
- В функции VSort() происходит сортировка массива.
- В цикле for перебираются все элементы массива, начиная с первого (i=0) и до n-1 (где n - размер массива).
- Для каждого элемента массива (в каждой итерации цикла) происходит поиск его правильного положения путем сравнения со всеми последующими элементами.
- Если текущий элемент больше следующего, они меняются местами, и увеличивается счетчик c_swap.
- После завершения цикла, массив будет отсортирован по возрастанию.
- В функции main() создается массив Arr, заполняется значениями для примера.
- Выводится на экран содержимое массива до сортировки.
- Задаются начальные значения счетчиков c_comp и c_swap.
- Вызывается функция VSort(), которая сортирует массив Arr.
- Выводится на экран отсортированный массив Arr.
- Выводятся на экран значения счетчиков c_comp и c_swap.
- Запускается команда PAUSE, предназначенная для приостановки выполнения программы до нажатия клавиши.
- Возвращается 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д