В пузырьковой сортировке посчитать количество перестановок и сравнения - C (СИ)
Формулировка задачи:
В пузырьковой сортировке посчитать количество перестановок и сравнения
Листинг программы
- //point.c
- # include "point.h"
- void bubble_sort(int *arr, int n)
- {
- int i, j, t, flag;
- for (i=0; i<n-1; i++)
- {
- flag=0;
- for(j=0;j<n-1-i; j++)
- if (arr[j]>arr[j+1])
- {
- flag=0;
- t=arr[j+1];
- arr[j+1]=arr[j];
- arr[j]=t;
- }
- if(flag!=0)
- break;
- }
- }
- void print_arr (int *arr, int n)
- {
- int i;
- for(i=0; i<n; i++)
- printf("%i", arr[i]);
- }
- //point.h
- # include <stdio.h>
- void bubble_sort(int *arr, int n);
- void print_arr (int *arr, int n);
- //main.c
- #include "point.h"
- int main ()
- {
- int arr[]={9,5,8,6,3,7,1};
- print_arr(arr, sizeof arr/sizeof(int));
- bubble_sort(arr, sizeof arr/sizeof(int));
- printf("\n");
- print_arr(arr, sizeof arr/sizeof(int));
- return 0;
- }
Решение задачи: «В пузырьковой сортировке посчитать количество перестановок и сравнения»
textual
Листинг программы
- #include <stdio.h>
- int counter;
- void bubble_sort(int *arr, int n)
- {
- int j, t, flag;
- while (1)
- {
- flag=0;
- for(j=0;j<n-1;j++)
- if (arr[j]>arr[j+1])
- {
- flag=-1;
- counter++;
- t=arr[j+1];
- arr[j+1]=arr[j];
- arr[j]=t;
- }
- if(flag==0) break;
- }
- }
- void print_arr(int *arr, int n)
- {
- int i;
- for (i=0; i<n; i++) printf("%d ",arr[i]);
- printf("\n");
- }
- int main(int argc, char* argv[])
- {
- int Arr[12]={1,2,3,1,2,3,1,2,3,1,2,3};
- counter=0;
- print_arr(Arr,12);
- bubble_sort(Arr,12);
- print_arr(Arr,12);
- printf("\ncounter=%d\n",counter);
- return 0;
- }
Объяснение кода листинга программы
- Объединение файлов .h и .c
- Объявление переменных:
- counter - для подсчета количества перестановок
- Arr - массив для сортировки
- Реализация пузырьковой сортировки:
- j, t, flag - вспомогательные переменные
- флаг устанавливается в 0 перед каждой итерацией
- если текущий элемент больше следующего, то:
- меняется флаг на -1
- увеличивается счетчик перестановок
- текущий элемент меняется местами с предыдущим
- Реализация вывода массива на экран
- В функции main():
- инициализация массива Arr
- вывод массива на экран до сортировки
- вызов функции сортировки
- вывод массива на экран после сортировки
- вывод значения счетчика перестановок
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д