В пузырьковой сортировке посчитать количество перестановок и сравнения - C (СИ)

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

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

В пузырьковой сортировке посчитать количество перестановок и сравнения
Листинг программы
  1. //point.c
  2. # include "point.h"
  3. void bubble_sort(int *arr, int n)
  4. {
  5. int i, j, t, flag;
  6. for (i=0; i<n-1; i++)
  7. {
  8. flag=0;
  9. for(j=0;j<n-1-i; j++)
  10. if (arr[j]>arr[j+1])
  11. {
  12. flag=0;
  13. t=arr[j+1];
  14. arr[j+1]=arr[j];
  15. arr[j]=t;
  16. }
  17. if(flag!=0)
  18. break;
  19. }
  20. }
  21. void print_arr (int *arr, int n)
  22. {
  23. int i;
  24. for(i=0; i<n; i++)
  25. printf("%i", arr[i]);
  26. }
  27. //point.h
  28. # include <stdio.h>
  29. void bubble_sort(int *arr, int n);
  30. void print_arr (int *arr, int n);
  31. //main.c
  32. #include "point.h"
  33. int main ()
  34. {
  35. int arr[]={9,5,8,6,3,7,1};
  36. print_arr(arr, sizeof arr/sizeof(int));
  37. bubble_sort(arr, sizeof arr/sizeof(int));
  38. printf("\n");
  39. print_arr(arr, sizeof arr/sizeof(int));
  40. return 0;
  41. }

Решение задачи: «В пузырьковой сортировке посчитать количество перестановок и сравнения»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int counter;
  4.  
  5. void bubble_sort(int *arr, int n)
  6. {
  7.     int j, t, flag;
  8.  
  9.     while (1)
  10.     {
  11.         flag=0;
  12.         for(j=0;j<n-1;j++)
  13.             if (arr[j]>arr[j+1])
  14.             {
  15.                 flag=-1;
  16.                 counter++;
  17.                 t=arr[j+1];
  18.                 arr[j+1]=arr[j];
  19.                 arr[j]=t;
  20.             }
  21.         if(flag==0) break;
  22.     }
  23. }
  24.  
  25. void print_arr(int *arr, int n)
  26. {
  27.     int i;
  28.     for (i=0; i<n; i++) printf("%d ",arr[i]);
  29.     printf("\n");
  30. }
  31.  
  32. int main(int argc, char* argv[])
  33. {
  34.     int Arr[12]={1,2,3,1,2,3,1,2,3,1,2,3};
  35.     counter=0;
  36.     print_arr(Arr,12);
  37.     bubble_sort(Arr,12);
  38.     print_arr(Arr,12);
  39.     printf("\ncounter=%d\n",counter);
  40.     return 0;
  41. }

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

  1. Объединение файлов .h и .c
  2. Объявление переменных:
    • counter - для подсчета количества перестановок
    • Arr - массив для сортировки
  3. Реализация пузырьковой сортировки:
    • j, t, flag - вспомогательные переменные
    • флаг устанавливается в 0 перед каждой итерацией
    • если текущий элемент больше следующего, то:
    • меняется флаг на -1
    • увеличивается счетчик перестановок
    • текущий элемент меняется местами с предыдущим
  4. Реализация вывода массива на экран
  5. В функции main():
    • инициализация массива Arr
    • вывод массива на экран до сортировки
    • вызов функции сортировки
    • вывод массива на экран после сортировки
    • вывод значения счетчика перестановок

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


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

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

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы